Проблемы изменения размера изображения для размещения на печатной странице - PullRequest
2 голосов
/ 26 сентября 2011

Я пытаюсь распечатать изображение (из файла) на принтере, используя PrintDocument.

Я изменяю размеры своего изображения, чтобы оно масштабировалось до полной страницы на распечатке, когдаЯ печатаю это изображение слегка обрезано.

РЕДАКТИРОВАТЬ 2

I am , используя поля для расчета используемой области:

With printSettings.DefaultPageSettings
    Dim areaWidth As Single = .Bounds.Width - .Margins.Left - .Margins.Right
    Dim areaHeight As Single = .Bounds.Height - .Margins.Top - .Margins.Bottom
End With

Границы страницы: 1169x827 (A4), а с полями - 1137x795.

После изменения размера мой размер изображения составляет 1092x682, и я использую следующий код для его отрисовки: e.Graphics.DrawImage(printBitmap, .Margins.Left, .Margins.Top)

Раздражает то, что когда я печатаю в PrintPreviewDialog, он масштабируется идеально, но когда я печатаю тот же самый код на реальном принтере, он не подходит.

Полный код можно найти на этот URL Использование:

Dim clsPrint As New clsPrinting
    With clsPrint
        .Landscape = True
        .SetMinimumMargins()
        If .ShowPrintDialog Then
            .Documentname = "Some doc name"
            .Preview = False 'When True shows ok
            .PrintImage("filename of a png file")
        End If
    End With

Ответы [ 4 ]

1 голос
/ 04 января 2014

Вы должны работать с MargiBounds:

в C#:

e.Graphics.DrawImage(your_image, e.MarginBounds);

в C++/CLI:

e->Graphics->DrawImage(your_image, e->MarginBounds);

Примечание. Если ваше изображениене имеет того же соотношения сторон, которое вам нужно настроить.В этом примере ширина изображения превысила ширину страницы:

Dim adjustment As Double = img.Width / e.MarginBounds.Width
e.Graphics.DrawImage(img, New Rectangle(New Point(0, 0), New Point(img.Width / adjustment, img.Height / adjustment)))
1 голос
/ 27 сентября 2011

Попробуйте использовать e.graphics.VisibleClipBounds для размера печатной страницы в функции PrintPage.Как сказал Ганс, лучше не менять размер изображения перед печатью.

0 голосов
/ 11 октября 2011

Я не нашел решения этой проблемы.Я работал над этим, используя поля принтера при предварительном просмотре печати и игнорируя поля (начиная с 0,0 источника) при фактической печати.Я считаю, что это, возможно, ошибка в драйвере принтера?Но я не могу подтвердить.

0 голосов
/ 26 сентября 2011

Звучит так, будто вы хотите напечатать страницу с полным выпуском , на которую большинство персональных принтеров не способны. Как упоминается в одном из приведенных выше комментариев, добавьте поля для изменения размера изображения до соответствующего размера.

...