[ТЕМА ЗАКРЫТА]
Опции темы
31.10.2007 11:40  
Pyatak
В Delphi и C++Builder'e есть такой замечательный объект Printer, у которого есть канва, на которой что-то можно нарисовать а затем напечатать.

У канвы есть методы, позволяющие определить длину и высоту в пикселях текстовой строки (TextWidth(string) и TextHeight(string)). Саму же текстовую строку можно вывести методом TextOut(string). Так вот, если вывести строку на канву формы, а затем очертить ее прямоугольником, размерами TextWidth и TextHeight, будет всё хорошо. Если же тоже самое сделать на канве принтера, то прямоугольник получается примерно на 10% меньше, т.е. TextWidth и TextHeight возвращают неверные значения! Кто-нибудь сталкивался? Куда копать?
 
31.10.2007 13:13  
OlegON
С разными шрифтами такое? Какие шрифты?
 
31.10.2007 13:40  
Pyatak
Да из стандартного набора только использую: Arial, да Arial Narrow.
Сначала думал, что от принтера зависит (от его драйвера), но на разных принтерах результат один и тот же. (Внешний вид залитых областей и не сплошных линий, например, зависит от того, на каком принтере они печатаются)

Процедура, отрисовывающая это дело на экране и на принтере одна и таже (в нее указатель на конву передается), на экране всё гуд, а на принтере шрифт выходит больше чем на экране. Причем, если мысленно наложить напечатанное изображение на экранное, то все линии совместятся, даже те, которые обводят текст изходя из его размера (получив размер ф-ями TextWidth, TextHeight), а сам текст получается несколько больше.
 
31.10.2007 15:37  
Pyatak
Тьфу, немного разобрался. Выловил маленькую ошибочку и понял в чем собака зарыта на самом деле.
Так вот, оказывается принтер не воспринимает значение Printer.Canvas.Font.PixelsPerInch
Т.е., если для обычной конвы выполнить:
Код:
Canvas.Font.PixelsPerInch:=100;
Canvas.OutText(0,0,'Hello');
Canvas.Font.PixelsPerInch:=200;
Canvas.OutText(0,0,'Hello');
то второе "Hello" будет в два раза меньше, а если то-же самое выполнить для принтерной канвы, то оба слова будут одинакового размера!
Осталось побороть эту проблему...
 
 
Опции темы



Часовой пояс GMT +3, время: 05:06.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.