Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.21;
Скачать: CL | DM;

Вниз

Размеры шрифтов   Найти похожие ветки 

 
REA ©   (2002-10-09 12:02) [0]

Тут была уже тема, что шрифты плавно не смасштабировать.
Если устанавливать Height то при размере шрифта 10
Font.Height = -Font.Size * Font.PixelsPerInch / 72 =
-10*96/72 = -13 в логических единицах.
Т.е. не больно то оно и масштабируется на экране.
На принтер -10*1200/72 = -167 уже лучше
Есть соображния как сделать вывод на экран более точным?
Может не использовать MM_Text режим?
Кто понимает в этих логических единицах?


 
MBo ©   (2002-10-09 12:26) [1]

набросок

procedure TextScaleOut(dc:HDC; Scale:Double; x,y:integer; const s:String);
begin
SetMapMode(dc,MM_ANISOTROPIC);
SetViewPortExtEx(dc,100,100,nil);
SetWindowExtEx(dc,round(100/scale),round(100/scale),nil);
TextOut(dc,x,y,Pchar(S),Length(s));

// для сохранения точки вывода в экр. координатах можно так
// TextOut(dc,round(x/scale),round(y/scale),Pchar(S),Length(s));

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
image1.canvas.font.Name:="Arial";//TTF
TextScaleOut(image1.canvas.handle,2,20,20,"Some text");
end;


 
REA ©   (2002-10-09 14:00) [2]

А координаты как расчитать, чтобы в миллиметры перевести?
Т.е. миллиметры в пикселы тривиально в MM_TEXT переводятся, а тут как?
Надо бы мне конечно самому попробовать, но сейчас жалко некогда. Если есть идеи, буду рад посмотреть.


 
MBo ©   (2002-10-09 14:09) [3]

Если в миллиметры, то надо MM_HIMETRIC или LOMETRIC или GetDeviceCaps делать.
Кстати, в Тейксейре описано (9 глава, последняя страница раздела Статьи)


 
REA ©   (2002-10-09 14:53) [4]

Как переводить - понятно. Ладно.
Сам разберусь потом - главное идея.
Я просто думал он шрифты не масштабирует при смене режима.


 
REA ©   (2002-10-10 10:59) [5]

Фигня получается - шрифты квадратные.
Оно сначала выводит куда-то, а потом рендерит на DC, а не меняет сам шрифт.
Я так уже пробовал оказывается раньше и не стал менять MappingMode.


 
MBo ©   (2002-10-10 12:58) [6]

Что значит квадратные?


 
REA ©   (2002-10-10 13:48) [7]

Квадратные, значит при увеличении размера шрифта используется алгоритм растрового масштабирования и шрифт выглядит как увеличенный растровый, а не как TrueType большего размера.


 
MBo ©   (2002-10-10 14:12) [8]

Значит, ты не ttf шрифт используешь
у меня в примере
image1.canvas.font.Name:="Arial";//TTF
и гладко масштабируется, а растровые, конечно, квадратами получатся, причем хуже, чем если просто размер шрифта увеличивать - у них же есть опред. набор матриц для нескольких размеров.



 
REA ©   (2002-10-10 14:34) [9]

Хм. И правда. Спасибо!
Будем работать в этом напралении. Надо теперь проверить как картинки масштабируются и все остальное.


 
REA ©   (2002-10-10 15:47) [10]

Видимо не получится использовать для всего эту методику. Только для шрифтов...



Страницы: 1 вся ветка

Текущий архив: 2002.11.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
8-69450
Извращенец
2002-07-31 20:53
2002.11.21
Привет. Вот плохой вопрос для вас.


1-69412
V-A-V
2002-11-11 09:35
2002.11.21
Как перевести пиксели в миллиметры или наоборот


1-69301
Arkady
2002-11-12 13:04
2002.11.21
TPageControl


7-69604
Snake home
2002-09-24 10:33
2002.11.21
как отключить стандартную кнопку закрытия программы


3-69200
Yarus
2002-11-01 10:28
2002.11.21
Одновременный запуск