Jak mogę przekonwertować dane wprowadzone przez użytkownika z milimetra na piksele, aby wydrukować je na właściwej stronie?Drukuj w .NET - Konwersja z milimetra na piksel
używam następujący kod:
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 dostał wartość "9,5" i edtBorderTop.Text wartość "21,5". Te wartości to milimetry. Jeśli sprawdzę dane wyjściowe za pomocą tego kodu:
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();
}
}
Wyświetla obraz prawie na środku strony. A Przykład obliczenia:
mmToPixel (float.Parse (edtBorderLeft.Text) DPix) edtBorderLeft.Text = "9,5" DPix = 600; zwraca: 224
Jak mogę obliczyć właściwy punkt dla drukowanego obrazu?
spróbuj użyć TextRender.MeasureText(); i zobacz, czy to może coś w tym przypadku zrobić. – Burimi
Dzięki za pomoc. Znalazłem inne rozwiązanie. Proszę spojrzeć na moją odpowiedź. – hitzi