2010-04-18 3 views
0

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

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

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

ответ

3

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

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

Попробуйте использовать «двойную буферизацию MFC» для Google.

+0

спасибо.Ищем его искать. –

1

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

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

Btw, Visual Studio 2010 имеет добавить этот класс к последнему MFC:

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

1

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

Смежные вопросы