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

Вниз

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

 
romeo ©   (2003-12-06 12:42) [0]

Можно ли, зная HDC и хэндл шрифта этого DC, изменить, например, высоту шрифта, не выполняя следующей последовательности:

...
GetObject(HDC, LogFont, ...);
LogFont.lfHeight := NewValue;
Font := CreateFontIndirect(LogFont);
OldFont := SelectObject(HDC, Font);
TextOut(HDC, ...);
SelectObject(HDC, OldFont);
DeleteObject(Font);


 
me   (2003-12-06 13:53) [1]

ИМНО нет


 
romeo ©   (2003-12-06 15:16) [2]

Тогда приведу такой интересный факт.

Для своих специфических нужд пришлось сделать редактор векторной графики. Сделал возможность наносить на чертеж текстовые пометки. Каждый текстовый объект рисуется по приведенному выше коду. Взбрело в голову сравнить скорость работы моего детища с AutoCad"om.
При 30 000 текстовых объектов на чертеже у меня перерисовка занимает около 1с. Полез в AutoCad, сделал столько же отдельных текстовых объектов - задержки никакой. Ага, думаю, это наверное потому,что у них у всех одинаковые свойства (размер, поворот и т.д.). Полез в Autocad"овский VisualBasic, изменил Rand"омом свойства каждого объекта (высоту и угол поворота) - задержки при перерисовке все равно никакой. Снес все объекты и добавил в VB строчки, создающие каждый текстовый объект со своим собственным TextStyle. Запускаем макрос, вертаемся в Autocad, пробуем Pan"ом потаскать изображение - получаем ту же самую секунду задержки.
И тута я подумал, что когда TextStyle един для всех объектов, AutoCad не вызывает каждый раз CreateObject - DeleteObject, а как то просто меняет свойства Font"а у HDC. А если если меняется Textstyle то и происходит смена текущего hFont"a, что и вызывает задержку при перерисовке большого количества оъектов.


 
MBo ©   (2003-12-06 15:57) [3]

Объекты шрифтов не нужно удалять, просто создать заранее и выбирать нужный. А удалишь, когда больше не будут нужны.


 
romeo ©   (2003-12-06 16:13) [4]


> MBo © (06.12.03 15:57) [3]

Да, это поможет при панорамировании чертежа, когда изменяется только положение объектов на экране. А при динамическом Zoom"e - придется менять размер шрифта для каждого объекта, т.е. опять получаем задержку. Это, конечно, не смертельно, но хотелось бы сие исправить


 
MBo ©   (2003-12-06 16:26) [5]

При зуме, вероятно - не меняется размер шрифтов - а меняется режим отображения (SetMapMode и See Also)



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
11-29286
EAccessViolation
2003-05-29 16:02
2004.02.10
OnActivate (OnFocused) Form


3-29278
jago
2004-01-16 08:24
2004.02.10
Передача ADOConnection от VBasic DLL к Delphi программе


14-29588
Ig
2004-01-20 00:20
2004.02.10
Как в строковом массиве определить длину?


4-29681
BarlaZ
2003-12-08 07:30
2004.02.10
Как сделать ScreenShot главной формы моего приложения?


1-29372
tytus
2004-01-29 10:37
2004.02.10
Рисование битмапа в листбоксе.