Печать в .NET - преобразование из миллиметра в пиксель

Как преобразовать вводимые пользователем данные из миллиметров в пиксели, чтобы они печатались на нужной позиции страницы?

Я использую следующий код:

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 получил значение "9,5", а edtBorderTop.Text - значение "21,5". Эти значения - миллиметры. Если я проверю вывод с помощью этого кода:

    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();
        }            
    }

Он отображает изображение почти в центре страницы. Пример расчета:

mmToPixel(float.Parse(edtBorderLeft.Text), dpiX) edtBorderLeft.Text = "9.5" dpiX = 600; returns: 224

Как мне вычислить правильную точку для распечатанного изображения?

5
задан CharlesB 11 October 2011 в 09:04
поделиться