ting_s 2015-01-20 07:58 采纳率: 0%
浏览 1834

mfc文本框图形重叠问题

 void CVisionTest::OnPaint()
{
//CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
UpdateWindow();
m_userDirection=m_direction;
CRect dlgRect,staticRect,groupRect;
this->GetWindowRect (&dlgRect);
CStatic  *pStatic=(CStatic  *) GetDlgItem( IDC_STATIC1);
CStatic *pGroup=(CStatic  *)GetDlgItem(IDC_STATIC2);
//CStatic *pDlg=(CStatic  *)GetDlgItem(IDD_TEST_DIALOG);
//pDlg->GetWindowRect(&dlgRect);
pGroup->GetClientRect(&groupRect);
pStatic->GetClientRect(&staticRect);//得到静态文本框的尺寸
int x,y,z;
x=dlgRect.Width();
y=dlgRect.Height ();
z=groupRect.Width();
       pStatic->MoveWindow(CRect((x-z-staticWidth)/2,(y-staticHeight)/2,staticWidth,staticHeight));   
       CDC* pDC=pStatic->GetDC();//获得当前DC
CBitmap bitmap;
bitmap.LoadBitmap(m_bmpId);//将位图对象加载到bitmap对象中
BITMAP bmp;//位图结构,位图的数据,包括大小等
bitmap.GetBitmap(&bmp);//得到位图的数据
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);//创建一个与当前DC兼容的DC,与位图相关的信息保存到dcCompatible中了,要显示的目标区域则由当前DC:pDC所指示出来
CBitmap   *pOldbitmap = dcCompatible.SelectObject(&bitmap);
dcCompatible.FillSolidRect(0,0,bmp.bmWidth,bmp.bmHeight,RGB(255,255,255));//将背景设为白色
dcCompatible.SelectObject(&bitmap);
pDC->StretchBlt(0,0,staticWidth,staticHeight , &dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);//加载图片
//绘图完成后的清理   
       dcCompatible.SelectObject(pOldbitmap);    
       bitmap.DeleteObject();
Invalidate();
       ReleaseDC(pDC);
}

背景抑制是白色的,可是我已经重画图了

  • 写回答

2条回答 默认 最新

  • threenewbee 2015-01-21 06:22
    关注

    你要做什么?往文本框里面画图?那需要subclass这个文本框,否则windows也会往里面绘制白色背景和边框,和你的代码就打架了。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题