c语言设置字体透明,二级C语言辅导:绘制“透明”位图

c语⾔设置字体透明,⼆级C语⾔辅导:绘制“透明”位图硝化纤维素膜
绘制“透明”位图是指绘制某⼀位图中除指定颜⾊外的其余部分,我们称这种颜⾊为“透明⾊”。通过将位图的背景⾊指定为“透明⾊”,在绘制时,不绘制这部分背景,⽽仅绘制图像,这样就可以将位图中图像透明地绘制到窗⼝上。
绘制“透明”位图的关键是创建⼀个“掩码”位图(mask bitmap),“掩码”位图是⼀个单⾊位图,它是位图中图像的⼀个单⾊剪影。
在Windows编程中,绘图都要⽤到设备描述表,我们需创建两个内存设备描述表:位图设备描述表(image DC)和“掩码”位图设备描述表(mask DC)。位图设备描述表⽤来装⼊位图,⽽“掩码”位图设备描述表⽤来装⼊“掩码”位图。在“掩码”位图设备描述表中制作“掩码”位图的⽅式是:先创建⼀个单⾊的Bitmap,装⼊mask DC,然后,以“SRCCOPY”的⽅式将装有位图的位图设备描述表绘制(BitBlt)到mask DC上。这样,mask DC的显⽰平⾯中的位图即是“掩码”位图。
绘制“透明”位图的实际操作步骤:
1.将位图设备描述表以“SRCINVERT”的⽅式绘制(BitBlt)到显⽰设备描述表上;
2.将“掩码”位图设备描述表以“SRCAND”的⽅式绘制(BitBlt)到显⽰设备描述表上;
3.再将位图设备描述表以“SRCINVERT”的⽅式绘制(BitBlt)到显⽰设备描述表上。这样除“透明⾊”外的其余位图部分(图像部分)就被绘制到窗⼝上了。
实现代码如下:
void DrawTransparent(CDC * pDC, int x, int y, COLORREF crColour)
{ COLORREF crOldBack=pDC-〉SetBkColor(RGB(255,255,255));
COLORREF crOldText=pDC-〉SetTextColor(RGB(0,0,0));
CDC dcImage, dcMask;
CBitmap bmp;
bmp.LoadBitmap(IDB—TRANS);
//IDB—TRANS是待显⽰位图的资源ID
BITMAP bm;bmp.GetBitmap(&bm);
int nWidth=bm.bmWidth,nHeight=bm.bmHeight;
热敏打印机芯//为图像及mask各创建⼀个DC
dcImage.CreateCompatibleDC(pDC);
dcMask.CreateCompatibleDC(pDC);
//把图像装⼊image DC
人才库管理
CBitmap* pOldBitmapImage=dcImage.SelectObject(&bmp);
//为“掩码”位图创建⼀个单⾊bitmap
CBitmap bitmapMask;
bitmapMask.CreateBitmap(nWidth, nHeight, 1, 1, NULL); //把mask位图装⼊mask DC套管挤压
CBitmap* pOldBitmapMask = dcMask.SelectObject(&bitmapMask); //⽤透明⾊创建“掩码”位图
dcImage.SetBkColor(crColour);//crColor是位图中的透明⾊
dcMask.BitBlt(0, 0, nWidth, nHeight, &dcImage, 0, 0, SRCCOPY);//分3步进⾏实际的绘制
8gggg
pDC-〉BitBlt(x, y, nWidth, nHeight, &dcImage, 0, 0, SRCINVERT);
pDC-〉BitBlt(x, y, nWidth, nHeight, &dcMask, 0, 0, SRCAND);
>污水止回阀

本文发布于:2024-09-21 20:48:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/213854.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:位图   设备描述   绘制   透明
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议