Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-29361
BlackKing
2004-01-29 10:31
2004.02.10
Components - Property из ComboBoxa.


1-29423
Viking
2004-01-30 15:04
2004.02.10
Список MDI-Child окон


1-29454
AlexeyITN
2004-01-29 18:29
2004.02.10
Очень стыдно задавать такое о Combobox-e


4-29662
Леприкон
2003-12-05 09:08
2004.02.10
Смена цвета окна


14-29581
syte_ser78
2004-01-20 08:54
2004.02.10
Как вывести число ХХХХХХХ в виде Х ХХХ ХХХ ?





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