![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перевести соотношение точек объекта к точкам принтера? [WinXP]
Aleksandr. © (2005-08-03 12:41:00)Мой объект (потомок от TCustomListBox) рисует свои итемы простыми методами Canvas - вычислил Rect для рисунка, MoveTo, LineTo, Ellipse и т.д. в этом Rect. Раньше на печать выводилась только текстовая инфа. А теперь поступило распоряжение на печать выводить такое же графическое изображение, как на экране. Я сначала сгоряча сделал по-простому - при вызове метода печати подменяю канву на Printer.Canvas - и результат был впечатляющим: все тексты выложились нормально, а вся графика уместилась в маленьком уголке слева. Теперь не могу сообразить, как вычислить соотношение, на сколько увеличивать все отрезки и радиусы, чтобы изображение на принтере рисовалась адекватно...
Aleksandr. (2005-08-03 17:02:00) [1]Джо © :
Спасибо, покопаю...
Джо (2005-08-03 16:37:00) [2]Для моего монохромного лазерного след. код дает 8:
Val := GetDeviceCaps(Printer.Handle,BITSPIXEL);
ShowMessageFmt ('%d',[Val]);
Для драйвера Epson FX-80 (матричный): 1.
Для цветных принтеров дает 24. Однако виртуальный Pdf producer выдает тоже 1. Странно.
Покопай в этом направлении.
Aleksandr. (2005-08-03 16:12:00) [3]Может, тогда и подскажите, можно ли как-то узнать, цветной принтер или ч/б, чтобы цвета нормально привести?
Aleksandr. (2005-08-03 14:38:00) [4]Упс. Не был бы таким тупым, сам бы догадался... Спасибо!
Mx (2005-08-03 13:24:00) [5]GetDeviceCaps(Canvas.Handle, LOGPIXELSX) - количество пикселей в дюйме по-горизонтали
GetDeviceCaps(Canvas.Handle, LOGPIXELSY) - количество пикселей в дюйме по-вертикали
Вычисли для ListBox.Canvas.Handle и для Printer.Canvas.Handle, а потом возьми соотношение.