Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.009 c
8-69446
sad
2002-07-30 12:11
2002.11.21
TeeChart


1-69285
roman002
2002-11-12 10:26
2002.11.21
Получить данные из прогр строки


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


1-69368
AndreyAG
2002-11-10 09:51
2002.11.21
Окна


3-69205
sen
2002-11-01 13:54
2002.11.21
Хранение wav файлов в BLOB полях Oracle





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский