Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1310660066
R_R
2011-07-14 20:14
2011.11.13
Услуга VPS windows


15-1311068343
George
2011-07-19 13:39
2011.11.13
Еще фоточки


15-1310416194
Юрий
2011-07-12 00:29
2011.11.13
С днем рождения ! 12 июля 2011 вторник


9-1189865512
andreil
2007-09-15 18:11
2011.11.13
Вопрос по вращению в OpenGl


15-1310627957
R_R
2011-07-14 11:19
2011.11.13
Как работать с Windows VDS, что можно почитать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский