MFC 双缓存绘图出现黑边的问题 10C
 //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个回答

levis_shen
迷璐的小强 这个是在整个窗口上绘图,我想在一个static控件绘图。。
4 年多之前 回复

不要用这个FillSolidRect,试试FillRect,新建一个CBrush

Struggle_For_M
老七_ 回复迷璐的小强: 那有可能是你设置的大小不一样,导致一些没有地方灰度默认为0
4 年多之前 回复
levis_shen
迷璐的小强 刚才试了一下,也是不行,还是出现黑边。。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐