创建透明位图的方法
来源:互联网 发布:mac照片程序打不开 编辑:程序博客网 时间:2024/04/30 09:48
在做界面开发的时候经常需要去创建透明的位图,由于MFC没有封装这样的函数,经过多方查找资料和试验,终于写出了一个可以创建透明位图的函数,下面给大家分享一下。
void BitTrans(
int nXDest, // 目标起点X
int nYDest, // 目标起点Y
int nWidthDest, // 目标宽度
int nHeightDest,// 目标高度
CDC* pDC, // 目标DC
int nXSrc, // 来源起点X
int nYSrc, // 来源起点Y
COLORREF crTrans// 透明色
)
{
CMemDC dcImage(nWidthDest, nHeightDest,pDC);//临时DC
CBitmap bmpMask;
bmpMask.CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL); // 创建单色掩码位图
CDC dcMask;//掩码DC
dcMask.CreateCompatibleDC(pDC);
dcMask.SelectObject(bmpMask);
//将载入位图的内存DC中的位图,拷贝到临时DC中
dcImage.BitBlt( 0, 0, nWidthDest, nHeightDest, this, nXSrc, nYSrc, SRCCOPY);
// 设置临时DC的透明色
dcImage.SetBkColor(crTrans);
//掩码DC的透明区域为白色其他区域为黑色
dcMask.BitBlt(0, 0, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCCOPY);
//临时DC透明区域为黑色,其他区域保持不变
dcImage.SetBkColor(RGB(0,0,0));
dcImage.SetTextColor(RGB(255,255,255));
dcImage.BitBlt( 0, 0, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND);
// 目标DC透明部分保持屏幕不变,其他部分变成黑色
pDC ->SetBkColor(RGB(255,255,255));
pDC ->SetTextColor(RGB(0,0,0));
pDC ->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND);
pDC ->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCPAINT);
}
void BitTrans(
int nXDest, // 目标起点X
int nYDest, // 目标起点Y
int nWidthDest, // 目标宽度
int nHeightDest,// 目标高度
CDC* pDC, // 目标DC
int nXSrc, // 来源起点X
int nYSrc, // 来源起点Y
COLORREF crTrans// 透明色
)
{
CMemDC dcImage(nWidthDest, nHeightDest,pDC);//临时DC
CBitmap bmpMask;
bmpMask.CreateBitmap(nWidthDest, nHeightDest, 1, 1, NULL); // 创建单色掩码位图
CDC dcMask;//掩码DC
dcMask.CreateCompatibleDC(pDC);
dcMask.SelectObject(bmpMask);
//将载入位图的内存DC中的位图,拷贝到临时DC中
dcImage.BitBlt( 0, 0, nWidthDest, nHeightDest, this, nXSrc, nYSrc, SRCCOPY);
// 设置临时DC的透明色
dcImage.SetBkColor(crTrans);
//掩码DC的透明区域为白色其他区域为黑色
dcMask.BitBlt(0, 0, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCCOPY);
//临时DC透明区域为黑色,其他区域保持不变
dcImage.SetBkColor(RGB(0,0,0));
dcImage.SetTextColor(RGB(255,255,255));
dcImage.BitBlt( 0, 0, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND);
// 目标DC透明部分保持屏幕不变,其他部分变成黑色
pDC ->SetBkColor(RGB(255,255,255));
pDC ->SetTextColor(RGB(0,0,0));
pDC ->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcMask, 0, 0, SRCAND);
pDC ->BitBlt(nXDest, nYDest, nWidthDest, nHeightDest, &dcImage, 0, 0, SRCPAINT);
}
0 0
- 创建透明位图的方法
- 创建透明位图
- MFC 绘制透明位图的方法
- MiniGui实现透明位图的方法
- 透明位图的显示
- 透明位图的显示
- 透明位图的显示
- 透明色的位图
- 透明位图的显示
- 透明位图的绘制
- 透明位图的显示
- 位图的透明显示
- 透明位图的显示
- 透明位图的显示
- 透明位图的显示
- 透明位图的显示
- 透明位图的显示
- 加载位图树纹理的两种方法---背景透明
- ION 内存管理
- How to Type - HDU 2588 dp
- Tomcat解压解压版本研究
- [设计模式] 代理模式(Proxy)
- 女儿在娘家分到拆迁房!户口被冻结!可以迁出么?还可以婚迁异地么?
- 创建透明位图的方法
- Mac OSX Lion上安装Node环境
- 并查集
- (约瑟夫应用)5.4.1 Roman Roulette
- 合同纠纷,甲方拖延工程款
- [设计模式]-观察者模式(Observer)☆
- position属性absolute与relative 详解
- 这样会判多久
- 实现app上对csdn的文章查看,以及文章中图片的保存 (制作csdn app 完结篇)