Печать без полей - PullRequest
       3

Печать без полей

4 голосов
/ 13 марта 2012

Я пытаюсь напечатать элемент управления WPF шириной 4 "и шириной 3".

Я использовал ScaleTransform на элементе управления (a Canvas) для соответствующего масштабирования;однако при печати на принтере часть изображения обрезается (верхний и левый края).

Согласно этой нити :

Причиной этой проблемы является то, что принтер обеспечивает незапечатанное поле по краю бумаги, но метод PrintDialog.PrintVisual предназначен для печати по краю бумаги.Таким образом, область, которая лежит на незапечатанном поле вокруг края бумаги, обрезается.

В потоке не упоминается, как получить поля или как заставить принтер игнорировать эти поля.Как получить эти значения, чтобы я мог печатать с использованием WPF без обрезки?

1 Ответ

5 голосов
/ 13 марта 2012

Вам нужно будет объединить информацию от PrintDocumentImageableArea с Measure и Arrange членами вашего UIElement:

// I could not find another way to change the margins other than the dialog
var result = printDialog.ShowDialog();
if (result.HasValue && result.Value)
{
    var queue = printDialog.PrintQueue;

    // Contains extents and offsets
    var area = queue.GetPrintCapabilities(printDialog.PrintTicket)
                    .PageImageableArea;

    // scale = area.ExtentWidth and area.ExtentHeight and your UIElement's bounds
    // margin = area.OriginWidth and area.OriginHeight
    // 1. Use the scale in your ScaleTransform
    // 2. Use the margin and extent information to Measure and Arrange
    // 3. Print the visual
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...