Форум: "WinAPI";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
ВнизРазмеры шрифтов Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.11.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c