Форум: "WinAPI";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];
ВнизPrinter.Canvas с LOGPIXELSX <> LOGPIXELSY, что с Pen.Width ? Найти похожие ветки
← →
GuAV © (2005-10-30 17:02) [0]Для печати на принетере использую следующую последовательность операций
PrinterDialog
Вызов GetDeviceCaps с параметрами LOGPIXELSX и LOGPIXELSY
BeginDoc
Рисование на Printer.Canvas с учётом значений GetDeviceCaps
EndDoc
Однако, при использовании пера (TPen) выходит, что нужно задать различную Width для горизонтальных и вертикальных линий. В то же время, фигуры, такие как Rectangle, Ellipse, рисуются одной коммадной GDI, и, соответственно, одним пером. Как задавать ширину линий в этом случае, есл нужна постоянная ширина линии ? И что будет, если на этот принтер воспроизвести метафайл, записанный с одинаковым разрешением по осям ?
Подскажите пожалуйста, существует ли следующая проблема, и если да, то как с ней бороться, если нет - почему.
← →
GuAV © (2005-11-01 01:06) [1]Мне ответил Peter Below в
borland.public.delphi.graphics
, темаPrinting via Printer.Canvas - what"s for Pen.Width, if LOGPIXELSX<>LOGPIXELSY ?
Решение:
Принтеры с LOGPIXELSX <> LOGPIXELSY существуют.
Проще всего забыть о пересчёте координат вручную, и преобразовывать черезCoordinate Space and Transformation Functions
, в частностиSetMapMode(Printer.Canvas.Handle, MM_HIMETRIC);
, тогда проблема учёта LOGPIXELSX и LOGPIXELSY будет переадресована Windows.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c