Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.004 c
2-1310392304
jetus
2011-07-11 17:51
2011.11.13
MDI-приложение и перерисовка родительской формы


2-1311432550
Pcrepair
2011-07-23 18:49
2011.11.13
Сервер-клиент РДП. обработка кнопки мыши


2-1311149076
Scott Storch
2011-07-20 12:04
2011.11.13
ошибка при работе с параметрами запроса


4-1251718295
d@vinchi
2009-08-31 15:31
2011.11.13
Создание оснастки (snap-in) для MMС?


15-1311014236
NailMan
2011-07-18 22:37
2011.11.13
Шутим тут, плюшками балуемся...




   Наверх