Какие полезные функции для рисования текста (MFC)? - PullRequest
0 голосов
/ 18 апреля 2010

Я создаю элемент управления линейной диаграммы, и мне нужно написать (или, точнее, нарисовать) имена осей и значения осей.

Я нашел функции DrawText и TextOut, но текст, который они показывают, мерцает и не знает, как установить шрифт и ориентацию текста (мне потребуется вертикальная ориентация текста, а также горизонтальная).

Есть ли другие функции, которые вы могли бы порекомендовать, или как использовать указанные выше и получить нужные мне результаты?

Ответы [ 3 ]

3 голосов
/ 18 апреля 2010

Я сомневаюсь, что мерцание вызвано DrawText или TextOut, а скорее вашим методом рисования. Если вы перерисовываете все окно в событии рисования, это может привести к колебаниям при удалении всего окна, и тогда перед перерисовкой всех элементов будет заметная задержка.

Может быть возможно уменьшить мерцание приемлемо, только нарисовав недействительную область; однако это может стать сложным. Более простой способ - использовать двойная буферизация ; где вы рисуете в невидимый контекст памяти, а затем переключаете его в видимый контекст.

Попробуйте Google'ing "Двойная буферизация MFC" для множества примеров.

1 голос
/ 19 апреля 2010

Шрифт и ориентацию можно установить, выполнив GetLogFont (), изменив элементы LOGFONT, а затем выполнив CreateFontIndirect () с измененными настройками. Это все win32 с очень тонкой оболочкой, так что вы можете прочитать Petzold, чтобы узнать подробности и примеры.

1 голос
/ 19 апреля 2010

Звучит так, будто вы ищете CMemDC, который в основном оборачивает ваш CDC (или CPaintDC). Вы делаете все свои рисунки в CMemDC, а затем копируете себя в исходный CDC при уничтожении.

http://www.codeproject.com/KB/GDI/flickerfree.aspx

Кстати, Visual Studio 2010 добавил этот класс в последнюю версию MFC:

http://msdn.microsoft.com/en-us/library/cc308997.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...