EasyX 框架实现透明图片显示的 trick
来源:互联网 发布:淘宝品牌男 休闲裤 编辑:程序博客网 时间:2024/04/30 10:15
看到的一篇无敌好的文章!!!
EasyX 框架实现透明图片显示的 trick
很多学校教授 C++ 图形编程时,为了规避 Windows 下 VC++ 较为复杂的绘图 API,都会(强制)要求学生使用 EasyX 这一绘图框架。该框架十分简陋地实现了初学者所需的图形功能。同时,此框架也存在大量不足,最为不便的就是不支持 png 格式图片,不支持透明背景绘图。
鉴于此框架的 putimage 函数支持三元光栅操作码,我们可以利用掩码位图来变相实现透明背景绘图。
参考了 http://code.qtuba.com/article-15636.html
1. 创建一个掩码位图
掩码位图是一个单色位图,它的黑色部分就是位图显示时要保留的部分,白色部分就是要透明的部分。这里使用马里奥举例:
原图:
掩码图:
2.把掩码位图用SRCINVERT(XOR)方式叠加到原图
白色XOR白色=黑色(白色的RGB都是255,1^1=0),黑色XOR任何颜色=原颜色(0^0=0,0^1=1)。操作完成后原图的透明区应被黑色填充。
也可以直接用黑色填充原图。
3.把掩码位图用SRCAND(AND)方式叠加背景中
白色and任何颜色=原颜色(1&1=1,1&0=0),黑色and任何颜色=黑色(0&0=0,0&1=0)。
4.把叠加过的原图用SRCPAINT(or)方式叠加到背景中
黑色or任何颜色=原颜色(0|1=1,0|0=0)。
代码如下:
123456789101112131415161718192021222324
#include <iostream>#include <graphics.h>using namespace std;int main() {initgraph(800, 600);// Load backgroundloadimage(NULL, _T("img\\background.jpg"));// Load marioIMAGE mariox, mario;loadimage(&mariox, _T("img\\mariox.bmp"));loadimage(&mario, _T("img\\mario.bmp"));// Trick to display transparent imageSetWorkingImage(&mario);putimage(0, 0, &mariox, SRCINVERT);SetWorkingImage(NULL);putimage(400, 465, &mariox, SRCAND);putimage(400, 465, &mario, SRCPAINT);getchar();closegraph();return 0;}
0 0
- EasyX 框架实现透明图片显示的 trick
- [easyx游戏开发]---实现透明背景效果
- WindowsApi+Easyx图形库的透明时钟
- 图片的透明半透明显示!
- 显示透明的PNG图片
- EasyX实现圆球的反弹
- EasyX实现小球的移动
- 如何实现透明遮挡层显示图片
- 使用CImage显示透明的PNG图片
- IE6下显示透明的PNG图片
- 显示透明图片的方法汇总
- 使用CImage显示透明的PNG图片
- 使用CImage显示透明的PNG图片
- 用Qt实现窗体的无边框、可移动、透明不规则显示(需背景透明的图片)
- 用Qt实现窗体的无边框、可移动、透明不规则显示(需背景透明的图片)
- EasyX图形库实现的扫雷
- 显示透明PNG图片
- vc透明显示图片
- Shell脚本 过滤掉错误写法的ip地址
- POJ 3674 Super Assassin 笔记 动态规划
- Abaqus的历史数据输出的问题
- Java 并发工具包 java.util.concurrent 用户指南
- (学习总结)鸟哥基础篇第三版:第十九章
- EasyX 框架实现透明图片显示的 trick
- Atitit gui控件定位解决方案
- 反射的用处
- mybatis之resultType resultMap(一)
- java学习总结1
- 71. Simplify Path
- 博为峰Java技术文章 ——JavaSE Swing 适配器类
- 流感传染
- Java温习——计算机语言和编程概述