Форум: "Начинающим";
Текущий архив: 2011.11.13;
Скачать: [xml.tar.bz2];
ВнизКак правильно выставить Font.PixelsPerInch для предпросмотра? Найти похожие ветки
← →
И. Павел © (2011-07-21 10:55) [0]Здравствуйте.
В моей программе есть вывод на принтер с помощью Printers.Printer (т.е. я просто работаю со страницей как с канвой). Теперь понадобилось сделать предварительный просмотр перед печатью. Для этого я переделал функции вывода на принтер так, чтобы они могли работать с произвольной канвой. Как добиться того, чтобы шрифт на канве предварительного просмотра был максимально похож на печатаемый? У принтера есть два свойства: число точек на дюйм по горизонтали и по вертикали. Но у шрифта есть только одно: Font.PixelsPerInch. Думаю, что большинство принтеров имеют одинаковое разрешение по вертикали и горизонтали, но все же хотелось бы сделать так, чтобы программа работала и в другой ситуации.
И еще: подскажите, пожалуйста, есть ли стандартные (или сторонние, но развивающиеся, работающие как под Delphi 7 так и под Delphi XE) компоненты, реализующие предварительный просмотр c printers.Printer? Канва принтера не копируется обычным способом – видимо, она организована как-то по-особенному.
Заранее спасибо.
← →
DiamondShark © (2011-07-21 11:11) [1]
> Как добиться того, чтобы шрифт на канве предварительного
> просмотра был максимально похож на печатаемый?
Создать совместимый с принтером битмап, и на нём рисовать.
← →
Amoeba_ (2011-07-21 11:53) [2]Готовый компонент (бесплатно и с исходниками):
http://www.delphiarea.com/products/delphi-components/preview/
← →
И. Павел © (2011-07-21 12:58) [3]> [2] Amoeba_ (21.07.11 11:53)
Большое спасибо. Похоже, пакет действительно хороший. К тому же разрабатывается с 2002 года по июнь этого года. Буду использовать его, т.к. лучше все равно не напишу, тем более за полторы недели, через которые заказчик требует результат.
> [1] DiamondShark © (21.07.11 11:11)
Спасибо. Правда, я там запутался: после присоединения контекста и битмапа к TBitmap свойство TBitmap.Canvas.PixelsPerInch равно 90 (т.е. как у экрана). Видимо, если делать этим способом, то придется отказаться от канвы и рисовать через API...var CompDC: HDC;
bmp: TBitmap;
CompBitmap: HBITMAP;
begin
CompDC := CreateCompatibleDC(Printer.Handle);
CompBitmap := CreateCompatibleBitmap(Printer.Handle,
Printer.PageHeight,
Printer.PageWidth);
SelectObject(CompDC, CompBitmap);
bmp := TBitmap.Create;
bmp.Handle := CompDC;
Button1.Caption := IntToStr(bmp.Canvas.Font.PixelsPerInch);
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.11.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c