我正在创建一个折线图控件,我需要编写(或更好地说是绘制)轴名称和轴值。
我找到了DrawText和TextOut函数,但是它们显示的文本是闪烁的,不知道如何设置字体和文本方向(我需要垂直文本方向和水平方向)。
您是否可以推荐其他功能或如何使用上述这些功能并获得我需要的结果?
答案 0 :(得分:3)
我怀疑是由DrawText或TextOut引起的闪烁,而是你的绘画方法。如果要在paint事件上重绘整个窗口,则在擦除整个窗口时可能会出现问题,然后在重新绘制所有元素之前会有明显的延迟。
可以通过仅绘制无效区域来可接受地减少闪烁;然而,这可能变得复杂。一种更简单的方法是使用双缓冲;在哪里绘制到不可见的内存上下文,然后将其切换到可见的上下文。
尝试Google的“MFC双缓冲”,以获取大量示例。
答案 1 :(得分:1)
听起来你正在寻找CMemDC
,它基本上包裹了你的CDC(或CPaintDC)。您将所有绘图都绘制到CMemDC,然后在销毁时将其自身复制到原始CDC。
http://www.codeproject.com/KB/GDI/flickerfree.aspx
顺便说一句,Visual Studio 2010已将此类添加到最新的MFC:
答案 2 :(得分:1)
字体&您可以通过执行GetLogFont(),修改LOGFONT成员,然后使用修改后的设置执行CreateFontIndirect()来设置方向。这是所有win32的东西,非常薄的包装,所以你可以阅读Petzold获取细节和更多的例子。