我有一个显示带注释的地图的 MFC 应用程序,其中可能包含大量文本。虽然文本的大小和字体变化不大,但文本的旋转变化很大,以便与周围的线条对齐。这基本上意味着每次旋转发生变化时,我都必须在显示上下文中创建并选择一种新字体。就像是;
if (TextRotationChanges)
{
m_pFont = new CFont;
m_lf.lfEscapement = NewRotation;
m_pFont->CreateFontIndirect(&m_lf);
}
CFont *OldFont = m_pDC->SelectObject(m_pFont);
m_pDC->TextOut(x,y,text,strlen(text));
m_pDC->SelectObject(OldFont);
在处理大量文本时,这显然很慢。有没有办法在不使用不同的显示引擎(如 D3D 或 OpenGL)的情况下加快速度?换句话说,我可以更改现有选定字体的文本旋转吗?
注意,我已经在进行其他明显的优化,例如在尝试绘制之前确保文本在屏幕上以可见大小显示。