Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.11.13;
Скачать: CL | DM;

Вниз

Как правильно выставить 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
15-1311107388
Юрий
2011-07-20 00:29
2011.11.13
С днем рождения ! 20 июля 2011 среда


15-1310338080
Кто б сомневался
2011-07-11 02:48
2011.11.13
Свитч, 2 компа и реальные IP - как сделать сеть?


2-1311205811
alexdn
2011-07-21 03:50
2011.11.13
Считывать построчно тхт


11-1239646702
imp
2009-04-13 22:18
2011.11.13
Проблема с событием OnPaint в TKOLMemo


3-1265030110
macrodens
2010-02-01 16:15
2011.11.13
Почему вставляются пустые поля?