¿Cómo puedo convertir la entrada del usuario de milímetros a píxeles para que se imprima en la posición correcta de la página?Imprimir en .NET - Conversión de milímetro a píxel
uso el siguiente código:
private void document_PrintPage(object sender, PrintPageEventArgs e)
{
float dpiX = e.Graphics.DpiX;
float dpiY = e.Graphics.DpiY;
Point p = new Point(mmToPixel(float.Parse(edtBorderLeft.Text), dpiX),
mmToPixel(float.Parse(edtBorderTop.Text), dpiY));
e.Graphics.DrawImage(testImage, p);
}
private int mmToPixel(float mm, float dpi)
{
return (int)Math.Round((mm/25.4) * dpi);
}
edtBorderLeft.Text tiene el valor de "9.5" y edtBorderTop.Text el valor de "21,5". Estos valores son milímetros. Si verifico la salida con este código:
private void printPage()
{
PrintDialog dialog = new PrintDialog();
dialog.Document = document;
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
PrintPreviewDialog preview = new PrintPreviewDialog();
preview.Document = document;
preview.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
preview.Show();
//document.Print();
}
}
Muestra la imagen casi en el centro de la página. Un ejemplo de cálculo:
mmToPixel (float.Parse (edtBorderLeft.Text), dpiX) edtBorderLeft.Text = "9.5" dpiX = 600; devoluciones: 224
¿Cómo puedo calcular el punto correcto para la imagen impresa?
probaría TextRender.MeasureText(); y ver si eso puede hacer algo en este caso – Burimi
Gracias por su ayuda. Encontré otra solución. Por favor mira mi respuesta. – hitzi