关于Easyx如何显示透明无背景贴图
最近用Easyx写东西玩的时候发现一个问题就是图片只能显示一整张包括背景的,比如我想写一个小人移动,也就是这个小人的图片移动,但是这个图片可能会有背景,整体观感就会很差。查询了一些资料和一点ps基础,终于解决了这个问题。
正常情况下我们显示图片,会显示整张图片,包括背景:
(这里我将控制台背景设置为红,与黑白色区分)
接下来就是显示的时候消除这个白边, 只留下人物。
这块原理涉及位运算,引用一个博主的说法:
首先,众所周知,在计算机中任何信息都是以二进制的方式存储的,那么也就是说每一段视频,每一张张图片的背后是无数的0和1,这里具体来谈一谈图片背后的0和1
在进入正题之前要先介绍一下RGB三原色,为后面更好的理解
每一个像素点的RGB用一个int整形变量来表示,我们知道,每一个整形变量所占的字节数为4(三十二位,但是前八个位不存数据,用作占位符),所有平均下来RGB每一个原色都占八位,所以取值范围都是是0~255,也就是说用RGB(255,0,0)表示红色,因为在R(red)对应的位置(第一个位置)上是255,而G(green)和B(blue)对应的位置上(第二个和第三个)都是0,所以是红色,同理RGB(0,255,0),RGB(0,0,255)分别表示绿色和蓝色,RGB(255,255,255)表示白色,RGB(0,0,0)表示黑色,如果理解了白色和黑色这两个颜色,下面会更简单
每张图片背后对应的RGB
由于图片也是以数字的方式(0和1),存储在计算机中的,那么就说明
我们就可以图片做一些数字可以做的事,比如位运算
是的,我们就是对图片做位运算,下面的三句话可能有点无聊加枯燥,但是也是核心之处,请静下心来仔细琢磨,
任何数和0做或运算(|)还是它本身
任何数和0做与运算(&)都是0
任何数和1做或运算(|)都是它本身
————————————————
版权声明:本文为CSDN博主「夜深人静推公式」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45848751/article/details/106983700
简要概括一下就是我们需要 黑底彩图 和 白底黑图(遮罩图)。
并且在显示的时候进行位运算就能得到透明贴图(其实是透明部分显示底图的颜色)
通过简单的ps操作就可以得到这两张图:
1.黑底彩图:
①先选出我们要的人物或关键图像(这里色差较大我直接用魔棒了)
②填充非关键部分也就是背景为黑
保存该素材
2.白底黑图(遮罩图)
①返回原图,并和之前一样操作选出不需要的背景部分,点击选择反向得到人物(或者直接得到背景更好了)
② 填充人物为黑
③再次选择反向,选中背景区域,填充为白
这样两张素材就整理好了
接下来只要在显示图片的代码上同时显示两张底图,并加上位运算即可:
宏: “ SRCAND ” 做与运算
宏: “SRCPAINT” 做或运算
#include<iostream>
#include<graphics.h>
#undef UNICODE
#undef _UNICODE
using namespace std;
int main()
{IMAGE yuan, zhezhao,bk,test;
//图片地址自己去对应图片下找loadimage(&yuan,_T("图片地址"),200,200,1);loadimage(&zhezhao,_T("图片地址"), 200, 200, 1);loadimage(&bk, _T("图片地址"), 800, 800, 1);loadimage(&test, _T("图片地址"), 200, 200, 1);initgraph(800, 800);setbkcolor(RED);//设置背景色为红色cleardevice(); //调用清屏cleardevice用背景色刷新背景//putimage(0, 0, &bk);putimage(100, 100 ,&zhezhao, SRCAND);//添加位运算宏putimage(100, 100, &yuan, SRCPAINT);system("pause");
}
效果图:
(左为处理完成的,右为原图)
即使在背景很复杂的底图下也能清晰显示人物
关于Easyx如何显示透明无背景贴图相关推荐
- 使用easyx中的putimage函数实现无背景贴图
1,待解决的问题 如果我们要在背景图片贴上小图片玫瑰花会出现什么样的效果 背景图片 玫瑰花 贴图之后的图片(玫瑰花图片我有意缩小,为了与背景看起来融洽些) 直接上代码: #include<gra ...
- python显示透明图片背景
首先,你得有一种背景色为透明的图片(ps处理过的),比如下面这样的gif图片. 之后可以使用程序在tkinter中配置好你的图像路径,这样就能在图形界面中显示出背景透明的图片了 from tkinte ...
- duilib修复ActiveXUI控件bug,以支持flash透明动态背景
转载请说明原出处,谢谢~~ 昨天在QQ控件里和同学说起QQ2013登陆窗体的开发,从界面角度考虑,单单一个登陆界面是很容易做出来的.腾讯公司为了防止各种盗号行为可谓煞费苦心,QQ2013采用了动态背景 ...
- 长图预警,全网最全的23个免费无背景PNG素材网站汇总,让你有用不完的资源!!
不管什么形式的内容创作,配图都是一个重中之重.找图片,俨然成为一个超级重要的事情.png素材对于设计来说,更是不可缺少的素材了! 当然了,可以PS抠图去背景(比较费时间),但是如果你有这个网站,就不要 ...
- CSS实现背景透明而背景上的文字不透明
在我们设计制作一些网页的时候可能会用到半透明的效果,首先我们可能会想到用PNG图片处理,当然这是一个不错的办法,唯一的兼容性问题就是ie6 下的BUG,但这也不困难,加上一段js处理就行了.但假如我们 ...
- WPF实现透明无边框悬浮球
想在工作中实现一个透明无边框并且具有动画功能的悬浮球,如图片所示,但在网上搜了之后发现发现使用wpf实现的基本没有,所以将自己实现的过程放在这里,希望给需要的一个方便,过程是这样的: <Wind ...
- kinect体感互动拍照软件开发,支持绿幕/无背景两种,自定义成像区域
体感互动拍照软件主要利用抠像技术和影像合成技术实现,参与者走进游戏区域内,会看见自己的影像已经被合成到前方的屏幕里,这就是抠像互动. 产品介绍: 佩京AR虚拟拍照系统支持绿幕和无背景,通过体感控制拍摄 ...
- 鼠标悬浮显示文字半透明背景
鼠标悬浮显示文字半透明背景 鼠标悬浮头像,出现文字"上传头像",之前都是使用< a title="上传头像"></a>这样的title来 ...
- BitBlt实现透明背景贴图
void CBitBltDlg::OnPaint() {CPaintDC dc(this); // 用于绘制的设备上下文CRect rect;GetClientRect(&rect);int ...
最新文章
- CentOS Linux 7 安全基线设置
- Python之字符处理方法大全
- (笔记)Linux Root下的.gvfs出现异常解决办法
- 档案盒正面标签制作_包材工艺丨浅述模内标签印刷及材料的选择
- kaggle(01)-泰坦尼克号问题
- android ros 节点编写_嵌入式的我们为什么要学ROS
- java访问错误404_如何解决 Java web 项目中的 404 错误
- 云空间-全面进入免费云时代-国内首家免费T级云空间!
- 你(wo)不注意的和数据类型有关的小细节
- isag java_ISAG - WEB源码|JSP源码/Java|源代码 - 源码中国
- Amlogic机顶盒开发工具使用
- 为什么要学习数据库以及数据库的选择
- SqlParameter防SQL注入的方法
- dota2服务器切换账号,DOTA2网络卡顿得到改善 全面更换电信服务器机房
- 学习java的第五天 基本数据类型 double、char、boolean
- 原来清理手机内存,使用管家是不够的!还需删除这4个文件夹
- 一代测序、二代测序以及三代测序的优缺点及应用对比?
- PTA7-4 考试周
- 阿里云实践训练营第七天——Class6 NAS快速搭建个人网盘
- X-Order创始人陶荣祺:Libra让所有互联网应用成为开放金融的一部分
热门文章
- 1.1.4 Getting Started_Budding Your First App_Starting Another Activity
- 91wii_安装Wii Game Loader,以轻松备份并缩短加载时间
- Rhino gha开发如何添加动态参数
- java 调用多次_关于java:Mockito可以捕获多次调用方法的参数吗?
- 生日祝福卡片 html,生日祝福卡片怎么写
- outlook自动下载附件
- 《拖延心理学》读书笔记
- 有关Inner、Outer等相关词汇的理解(二)
- 我装Windows 8 经历以及用后感
- 吴恩达 老师 机器学习资料