Главная страница
    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.007 c
4-69616
Alexander
2002-10-10 07:17
2002.11.21
Вопрос по PChar


3-69098
Sers
2002-11-02 10:34
2002.11.21
select * from Table - не работает


6-69473
IronHawk
2002-09-25 23:18
2002.11.21
Передача данных потоком по сети ...


14-69533
SV
2002-11-02 14:49
2002.11.21
Мама, где ты?


1-69249
TankMan
2002-11-09 16:05
2002.11.21
Насчет Таймера....





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