Главная страница
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.009 c
15-1311014236
NailMan
2011-07-18 22:37
2011.11.13
Шутим тут, плюшками балуемся...


2-1311246212
arturich
2011-07-21 15:03
2011.11.13
Вопрос по DevExpress


2-1311508935
prodex
2011-07-24 16:02
2011.11.13
Как построить запрос в Oracle, если...


2-1311230686
alexdn
2011-07-21 10:44
2011.11.13
Изменение Label


15-1310718132
lesstab
2011-07-15 12:22
2011.11.13
Вопрос опытным программистам