Главная страница
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.47 MB
Время: 0.021 c
3-29196
Mamed
2004-01-20 16:12
2004.02.10
SQL Transaction


1-29469
XfroSt
2004-01-30 13:38
2004.02.10
Сохранение части реестра в файл


9-29193
Vitas2
2003-07-21 10:09
2004.02.10
Пересечение луча с треугольником


7-29643
Mr.Bean
2003-11-25 23:02
2004.02.10
Как программно установить источник записи?


4-29679
maxi
2003-12-08 09:43
2004.02.10
Как создать Progress Bar динамически ? И под XP (его не видно) ?