Главная страница
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.015 c
1-29326
Yermek
2004-01-25 21:46
2004.02.10
Delphi and Word


4-29656
DmitryMN
2003-12-05 16:40
2004.02.10
Галочка в pif-файле


6-29507
Elik
2003-12-05 10:51
2004.02.10
Как загрузить в IdHTTP вторую половину странички


1-29465
Yuri Btr
2004-01-30 10:17
2004.02.10
Плавный скроллинг в StringGrid


8-29478
Юрий Ж.
2003-09-19 08:53
2004.02.10
DirectSound?