ting_s 2015-01-19 23:58 采纳率: 0%
浏览 1835

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-20 22:22
    关注

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

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了