VC 透明绘图
来源:互联网 发布:java的jvm 编辑:程序博客网 时间:2024/06/05 08:23
中间的位图就是透明绘图而成,屏蔽了背景黑色。
void CTranspantDlg::OnButton1() {CBitmap bit;bit.LoadBitmap(IDB_BITMAP5);BITMAP bi;bit.GetBitmap(&bi);int width=bi.bmWidth;int heigh=bi.bmHeight;CClientDC dc(this);CDC memDC;memDC.CreateCompatibleDC(&dc);memDC.SelectObject(&bit);TransparentBlt(dc.GetSafeHdc(),200,200,width,heigh,memDC.GetSafeHdc(),0,0,width,heigh,RGB(0,0,0));}
在我使用TransparentBlt函数的时候,发现了这个问题,用BitBlt可以显示,TransparentBlt就不能。
后经过测试,发现是TransparentBlt函数第9个和第10个参数的问题,
即nWidthSrc 和nHeightSrc这两个参数
这两个参数必须小于或等于位图的实际宽度和高度,否则此函数会调用失败,
在使用中要特别注意。
使用此函数须加载msimg32.lib库
#pragma comment( lib, "msimg32.lib" )
而TransparentBlt的位图不能为24色,只能是8位或者黑白图像
或者用自己写的透明绘图函数
void CTranspantDlg::DrawTransparentBitmap(CDC *pDC,UINT IDImage,int x,int y,COLORREF rgbMask){ CDC ImageDC,MaskDC; CBitmap Image,*pOldImage; BITMAP imgInfo;CBitmap maskBitmap,*pOldMaskDCBitmap ; Image.LoadBitmap(IDImage);//加载图片资源 Image.GetBitmap(&imgInfo);//取得图片资源信息ImageDC.CreateCompatibleDC(pDC); //创建pDC的兼容DC(ImageDC)pOldImage=ImageDC.SelectObject(&Image); //将图片选如dcMaskDC.CreateCompatibleDC(pDC); //创建pDC的兼容DC(MaskDC)maskBitmap.CreateBitmap( imgInfo.bmWidth, imgInfo.bmHeight, 1, 1, NULL ); //创建掩码图片pOldMaskDCBitmap = MaskDC.SelectObject( &maskBitmap ); //将掩码图片选入MaskDCImageDC.SetBkColor(rgbMask); //设置ImageDC的背景颜色//将ImageDC复制到掩码DCMaskDC.BitBlt( 0, 0, imgInfo.bmWidth, imgInfo.bmHeight, &ImageDC, 0, 0, SRCCOPY ); ImageDC.SetBkColor(RGB(0,0,0)); ImageDC.SetTextColor(RGB(255,255,255)); //将ImageDC和掩码DC相与ImageDC.BitBlt(0, 0, imgInfo.bmWidth, imgInfo.bmHeight, &MaskDC, 0, 0, SRCAND); pDC->BitBlt(x,y,imgInfo.bmWidth, imgInfo.bmHeight, &MaskDC, 0, 0, SRCAND); pDC->BitBlt(x,y,imgInfo.bmWidth, imgInfo.bmHeight, &ImageDC, 0, 0,SRCPAINT); MaskDC.SelectObject(pOldMaskDCBitmap); ImageDC.SelectObject(pOldImage); }void CTranspantDlg::OnButton2() {CClientDC dc(this);DrawTransparentBitmap(&dc,IDB_BITMAP5,300,300,RGB(0,0,0));}
- VC 透明绘图
- VC绘图
- vc 绘图
- GDI透明绘图
- GDI+透明绘图
- VC++绘图编程----怎样绘图
- GC绘图:绘制透明文本
- Qt绘图中透明橡皮
- 后台绘图设置背景透明
- vc 透明显示位图
- VC设置窗口透明
- VC 制作透明窗体
- VC++ 对话框透明效果
- VC++实现透明窗体
- VC中的位图透明
- vc 窗口透明
- VC 透明位图
- vc 透明图片
- Window_Open详解
- 微软等面试100题答案V0.2版[第1-20题答案]
- window.opener用法
- window.showModalDialog
- 微软等面试100题答案V0.3版[第21-40题答案]
- VC 透明绘图
- ZOJ 3018 Population【二维线段树四分动态建树】
- c语言 fopen,fgets,fputc,putchar函数的简单使用
- Java SecurityManager相关概念理解
- 外部系统集成BIEE 11g页面同时去掉顶部工具栏和仪表盘菜单
- SACC 2012 第一天
- 使用sql profle进行偷梁换柱的小例子
- Linux常用命令记录
- js基础语法。