jqrritfk11 2019-12-12 20:54 采纳率: 66.7%
浏览 156
已采纳

请问设置MM_LOMETRIC模式后,怎样使用双缓存,下面的代码在BitBlt后,得不到正确的客户区大小

int oldMapMode = pDC->SetMapMode(MM_LOMETRIC);

int oldBkMode = pDC->SetBkMode(TRANSPARENT);

CRect rcClient;

GetClientRect(&rcClient);

// pDC->DPtoLP(&rcClient);

pDC->SetViewportOrg(rcClient.left, rcClient.bottom);

CDC memDC; // Memory DC.

memDC.CreateCompatibleDC(pDC);

CBitmap memBitmap; // Create memory bitmap.

memBitmap.CreateCompatibleBitmap(&memDC, rcClient.Width(), rcClient.Height() );

memDC.SelectObject(&memBitmap); // Select the bitmap object.

// memDC.FillSolidRect(rcClient, pDC->GetBkColor());

pDC->BitBlt(0, 0, rcClient.Width(), rcClient.Height(), &memDC, 0, 0, SRCCOPY);

memDC.DeleteDC();

memBitmap.DeleteObject();

pDC->SetMapMode(oldMapMode);

pDC->SetBkMode(oldBkMode);

  • 写回答

1条回答 默认 最新

  • weixin_46200348 2020-01-16 13:03
    关注

    1>在内存DC上完成同样的操作:
    emDC.SetViewportOrg(rcClient.left, rcClient.bottom);

    2>第1、第2,第6,第7个参数分别改为计算后的逻辑坐标
    pDC->BitBlt(0, 0, rcClient.Width(), rcClient.Height(), &memDC, 0, 0, SRCCOPY);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探