迷璐的小强 2016-07-15 09:33 采纳率: 33.3%
浏览 1273
已结题

MFC 双缓存绘图出现黑边的问题

 //CDialog::OnPaint();
   CPaintDC dc(this); // 目标A桌子

     RECT myRect;

     GetDlgItem(IDC_STATIC)->GetWindowRect(&myRect);
     ScreenToClient(&myRect);
     //ScreenToClient(&myRect);

     //GetClientRect(&myRect);//获取桌子大小
     long nWidth=myRect.right - myRect.left;
     long nHigth=myRect.bottom - myRect.top;
     CDC tempdc;//B桌子
     CBitmap MemBitmap;//新桌布
     CBitmap*OldBitmap;//旧桌布

     tempdc.CreateCompatibleDC(NULL); //实体化B桌子
     MemBitmap.CreateCompatibleBitmap(&dc,nWidth,nHigth);//实体化给B使用的桌布
     //这里是拷贝了A的位图,自己用张图片也行,大小注意下
     OldBitmap=tempdc.SelectObject(&MemBitmap);

     //给B使用

     tempdc.FillSolidRect(&myRect,RGB(0,255,255));
     //默认黑色,自己按需改变
     //...............
     //在B桌布上画画,tempdc

     dc.BitBlt(myRect.left ,myRect.top, nWidth, nHigth, &tempdc,0,0,SRCCOPY);
     //拷贝给A
     tempdc.SelectObject(OldBitmap);
     //恢复B原有的桌布(习惯吧,就像申请内存后记得释放)
     //删除临时对象
     MemBitmap.DeleteObject();
     tempdc.DeleteDC();
     Invalidate(FALSE);

    上面是在:OnPaint() 函数现在添加的代码  本意是想在IDC_STATIC这个控件中用内存画图的方法 填充颜色,为啥控件没有填充满绿色,会出现黑边呢?
  • 写回答

2条回答 默认 最新

  • mazegong 2016-07-15 10:08
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作