Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
1-29445
Shark
2004-01-30 20:50
2004.02.10
Ищется конвертор HTML в Doc


1-29324
SeLarin
2004-01-29 15:01
2004.02.10
TLabel.Color


1-29455
ivankohut
2004-01-30 16:36
2004.02.10
Grid и Unicode


1-29345
Unax
2004-01-29 01:24
2004.02.10
MDI приложение


1-29419
Solom
2004-01-29 22:47
2004.02.10
Организация закладок




   Наверх