我有一个VisualC++应用程序,它使用CVIEW派生类来呈现它的显示,它主要是3D矢量数据和真实类型文本。所使用的映射模式是“mm_各向异性”或“mm_洛美”。我不能使用mm_文本,因为我使用相同的代码来打印和打印数据,还必须克服非方形屏幕像素问题。
绘图代码当前使用cView OnDraw方法和提供的cdc对象直接绘制到屏幕上。我正在尝试将此替换为绘制到位图,并使用createCompatibleDC/createCompatibleBitmap组合将位图Blitting到屏幕,如中所述。
MS documentation
在别处。
问题是,dcs与mm_文本以外的映射模式不兼容,因此我的视图呈现颠倒,比例错误。调查显示:
void CMyView::OnDraw(CDC *pDC)
{
CDC MyDC = CreateCompatibleDC(pDC); // Create a new memory DC;
int a = pDC->GetMapMode(),b = MyDC.GetMapMode();
'
'
'
}
a = 2
b = 1
在mydc上调用setmapmode会导致显示完全为黑色。我是否需要重写我的代码以适合绘制位图的mm_文本,或者是否有其他方法来解决这个问题。