将CreateCompatibleDC与除MM_文本之外的映射模式一起使用 我有一个VisualC++应用程序,它使用CVIEW派生类来呈现它的显示,主要是3D矢量数据和真类型文本。使用的映射模式为MM_各向异性或MM_LOMETRIC。我不能使用MM_文本,因为我使用相同的代码来打印和打印数据,还必须克服非方形屏幕像素问题

将CreateCompatibleDC与除MM_文本之外的映射模式一起使用 我有一个VisualC++应用程序,它使用CVIEW派生类来呈现它的显示,主要是3D矢量数据和真类型文本。使用的映射模式为MM_各向异性或MM_LOMETRIC。我不能使用MM_文本,因为我使用相同的代码来打印和打印数据,还必须克服非方形屏幕像素问题,c++,bitmap,mfc,gdi,C++,Bitmap,Mfc,Gdi,绘图代码当前使用CViews OnDraw方法和提供的CDC对象直接绘制到屏幕上。我正试图用绘制位图并使用CreateCompatibleDC/CreateCompatibleBitmap组合将位图快速显示到屏幕来代替此操作,如和其他地方所述 问题是DCs不兼容除MM_文本以外的映射模式,因此我的视图呈现为颠倒的,比例错误。调查表明: void CMyView::OnDraw(CDC *pDC) { CDC MyDC = CreateCompatibleDC(pDC); // Creat

绘图代码当前使用CViews OnDraw方法和提供的CDC对象直接绘制到屏幕上。我正试图用绘制位图并使用CreateCompatibleDC/CreateCompatibleBitmap组合将位图快速显示到屏幕来代替此操作,如和其他地方所述

问题是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_文本,或者是否有其他方法来克服此问题

您可能还需要打电话和。我以前肯定在位图DC中使用过MM_各向同性,它工作正常(没有移植到GDI+后的代码)

在将位图选择到兼容DC之前还是之后设置映射模式?当我无法创建正确类型的位图或根本无法选择位图时,我看到了所有黑色结果。我想知道位图维度是否是根据映射模式来解释的。