![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно выставить Font.PixelsPerInch для предпросмотра?
И. Павел © (2011-07-21 10:55:00)Здравствуйте.
В моей программе есть вывод на принтер с помощью Printers.Printer (т.е. я просто работаю со страницей как с канвой). Теперь понадобилось сделать предварительный просмотр перед печатью. Для этого я переделал функции вывода на принтер так, чтобы они могли работать с произвольной канвой. Как добиться того, чтобы шрифт на канве предварительного просмотра был максимально похож на печатаемый? У принтера есть два свойства: число точек на дюйм по горизонтали и по вертикали. Но у шрифта есть только одно: Font.PixelsPerInch. Думаю, что большинство принтеров имеют одинаковое разрешение по вертикали и горизонтали, но все же хотелось бы сделать так, чтобы программа работала и в другой ситуации.
И еще: подскажите, пожалуйста, есть ли стандартные (или сторонние, но развивающиеся, работающие как под Delphi 7 так и под Delphi XE) компоненты, реализующие предварительный просмотр c printers.Printer? Канва принтера не копируется обычным способом – видимо, она организована как-то по-особенному.
Заранее спасибо.
И. Павел (2011-07-21 12:58:00) [1]> [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);
Amoeba_ (2011-07-21 11:53:00) [2]Готовый компонент (бесплатно и с исходниками):
http://www.delphiarea.com/products/delphi-components/preview/
DiamondShark (2011-07-21 11:11:00) [3]
> Как добиться того, чтобы шрифт на канве предварительного
> просмотра был максимально похож на печатаемый?
Создать совместимый с принтером битмап, и на нём рисовать.