在mfc项目dialog中怎么使内存dc的背景透明 本帖最后由 u010827382 于 2014-11-02 12:55:20 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把m_MemDC.StretchBlt(0, 0,rect.Width(), rect.Height(), &m_ClothDC, 0, 0, rect.Width(), rect.Height(),SRCCOPY);改成m_MemDC.TransparentBlt(0, 0, rect.Width(), rect.Height(), &m_ClothDC, 0, 0, rect.Width(), rect.Height(), RGB(0, 0, 0)); m_MemDC.CreateCompatibleDC(&dc); 回复ChingLyon:这样改了之后 背景是能显示了 但是我在m_ClothDc中画的图显示不出来了。 回复schlafenhamster:m_MemDC.CreateCompatibleDC(&dc);这和参数有关吗? 这样跟参数为NULL是一样的吧? 我在void **dlg::OnInitDialog()做的是下面的处理:CBitmap MemBitmap;//定义一个位图对象 m_ClothDC.CreateCompatibleDC(NULL); //建立与屏幕显示兼容的内存显示装备 MemBitmap.CreateCompatibleBitmap(GetDC(), rect.Width(),rect.Height()); //建立一个与屏幕兼容的位图 m_ClothDC.SelectObject(&MemBitmap);//将位图选入到内存显示设备中 m_ClothDC.SetStretchBltMode(HALFTONE); CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); m_ClothDC.SelectObject(pBrush); LoadImageFromResource(&m_Image, str); //加载图片 这个不会错 m_Image.draw(m_ClothDC,&&&&&); } 对话框背景透明,必须使用层窗口,那么就需要使用gdi+来绘制图片和文字。 没办法了 实在找不到好的解决办法,只好再弄一个dc,把m_clothdc上的东西先绘制到这个Dc上,若要改变m_clothdc上的图片的话 ,再从新画过 为啥已经在dialog上画出来的控件,我就不能再create了? 如何从第三方窗口获取消息 关于GetOpenFileName这个函数的调用方法问题(急急急!!!) 双击应用程序图标时,如何使程序不能运行 关于一个tcp的服务器 为什么在网上传图象后,图象无法打开 ???????如何让程序建立时,不开一个新文档,及支持两种格式???? 运行程序到IMAGE时,为何总是出现软件报告关闭 求CAD中倒圆角的算法 GetCommandLine获取参数 求教下剪贴板位图操作 谁有Ftp客户端VC源码?发一份
m_MemDC.TransparentBlt(0, 0, rect.Width(), rect.Height(), &m_ClothDC, 0, 0, rect.Width(), rect.Height(), RGB(0, 0, 0));
这样改了之后 背景是能显示了 但是我在m_ClothDc中画的图显示不出来了。
m_MemDC.CreateCompatibleDC(&dc);
这和参数有关吗? 这样跟参数为NULL是一样的吧?
CBitmap MemBitmap;//定义一个位图对象
m_ClothDC.CreateCompatibleDC(NULL); //建立与屏幕显示兼容的内存显示装备
MemBitmap.CreateCompatibleBitmap(GetDC(), rect.Width(),rect.Height()); //建立一个与屏幕兼容的位图
m_ClothDC.SelectObject(&MemBitmap);//将位图选入到内存显示设备中
m_ClothDC.SetStretchBltMode(HALFTONE);
CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
m_ClothDC.SelectObject(pBrush);
LoadImageFromResource(&m_Image, str); //加载图片 这个不会错
m_Image.draw(m_ClothDC,&&&&&);
}