gpt4 book ai didi

c++ - 将 CreateCompatibleDC 与 MM_TEXT 以外的映射模式一起使用

转载 作者:行者123 更新时间:2023-11-28 04:00:07 25 4
gpt4 key购买 nike

我有一个可视化 C++ 应用程序,它使用 CView 派生类来呈现其显示,主要是 3d vector 数据和真实类型文本。使用的映射模式是 MM_ANISOTROPIC 或 MM_LOMETRIC。我不能使用 MM_TEXT,因为我使用相同的代码来打印和绘制数据,而且还必须克服非方形屏幕像素问题。

绘图代码当前使用 CViews OnDraw 方法和提供的 CDC 对象直接绘制到屏幕上。我正在尝试使用 CreateCompatibleDC/CreateCompatibleBitmap 组合将其替换为绘制位图并将位图 blitting 到屏幕,如 MS documentation 中所述和其他地方。

问题是 DC 与 MM_TEXT 以外的映射模式不兼容,因此我的 View 呈现颠倒且比例错误。调查显示如下;

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_TEXT 以绘制位图,或者是否有其他方法可以解决此问题。

最佳答案

您可能还需要调用 SetWindowExtSetViewportExt .我之前确实将 MM_ISOTROPIC 与位图 DC 一起使用,并且它工作正常(没有手头的代码,因为它是移植到 GDI+ 后的代码)

关于c++ - 将 CreateCompatibleDC 与 MM_TEXT 以外的映射模式一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1253856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com