Easyx实现png透明贴图的两种方法(无需掩码图)
话不多说,直接上代码。
在开始前,需要先配置一下附加依赖项,找到项目—属性—配置属性—链接器—输入,点击右侧第一行附加依赖项下行的编辑,添加winmm.lib
方式一:
// 使用 Windows GDI 函数实现透明位图
#include <graphics.h>
#include <conio.h>
#pragma comment( lib, "MSIMG32.LIB")
void transparentimage(IMAGE* dstimg, int x, int y, IMAGE* srcimg, UINT transparentcolor)
{HDC dstDC = GetImageHDC(dstimg);HDC srcDC = GetImageHDC(srcimg);int w = srcimg->getwidth();int h = srcimg->getheight();// 使用 Windows GDI 函数实现透明位图TransparentBlt(dstDC, x, y, w, h, srcDC, 0, 0, w, h, transparentcolor);
}
参数1:NULL即可,参数2、参数3为图片输出的坐标,参数4为源图片的指针,参数5为要透明的底色(若图片为透明图片,默认为BLACK)
实际使用:
transparentimage(NULL, 200, 100, &picture, BLACK);
此方法兼容性良好,支持任意底色的png图片,但透明效果取决于图片本身,若图片底色与图片本身颜色相近,透明化效果会大打折扣,如出现很大的黑色边缘块。
方式二:
#include <graphics.h>
#include <conio.h>
#pragma comment( lib, "MSIMG32.LIB")
void transparentimage3(IMAGE* dstimg, int x, int y, IMAGE* srcimg) //新版png
{HDC dstDC = GetImageHDC(dstimg);HDC srcDC = GetImageHDC(srcimg);int w = srcimg->getwidth();int h = srcimg->getheight();BLENDFUNCTION bf = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };AlphaBlend(dstDC, x, y, w, h, srcDC, 0, 0, w, h, bf);
}
实际使用:
transparentimage3(NULL, 220, 100, &picture[0]);//透明png
与上面的使用方法类似,但不需要指定透明的颜色,此种方法透明效果非常好,但只支持底色本身为透明色的png图片,即在windows下打开时就没有底色的png图片。
Easyx实现png透明贴图的两种方法(无需掩码图)相关推荐
- matlab 图像转视频教程,Matlab制作视频并转换成gif动态图的两种方法
一.第一个方法比较简单,就是使用movie(f)直接取生成AVI视频文件. %% f(t)-->f(4*t+12) 并且验证%% function Signal_change() tic%记录程 ...
- python matplotlib在一张画布上画多个图的两种方法,plt.subplot(),plt.subplots()。
Matplotlib在一张画布上画多个图的两种方法,plt.subplot,plt.subplots. 目录 回顾 plt.subplots()画法 plt.subplot()画法 保存 回顾 之前也 ...
- 轮播图的两种方法及自动轮播
轮播图共计四种方法,本期先向大家分享两种,下期会补充剩余二个方法 公共部分: * {padding: 0px;margin: 0px;}.banner {width: 600px;margin: au ...
- Tableau制作漏斗图的两种方法
很多业务都是由多个流程.多个环节组成,每一个环节的数据很多时候呈现逐级递减的趋势,如电商中用户的下单数据. 漏斗图主要用于展现每个环节的留存.转化情况,本文讲一下如何使用Tableau制作漏斗图. 本 ...
- python3+matplotlib绘制双轴折线图(两种方法)
Background 这里提供两种方法,一种是基于pandas,另一种是基于twinx. 1.先看最终效果图 pandas twinx 2.源码 import pandas as pd import ...
- Matlab画三维图的两种方法
2010-11-07 21:20:30 zz: http://hi.baidu.com/mynana/blog/item/3c79c1ce6b65cb0393457e7a.html 这几天看到Ras ...
- Python可视化 | Matplotlib绘制圆环图的两种方法!
人生苦短,快学Python!今天给大家介绍Python可视化之环形图的绘制. 环形图,也被称为圆环图.它在功能上与饼图相同,只是中间有一个空白,并且能够同时支持多个统计数据.与标准饼图相比,环形图提供 ...
- Matplotlib 绘制圆环图的两种方法!
作者 | 快快 来源 | 快学Python 人生苦短,快学Python!今天给大家介绍Python可视化之环形图的绘制. 环形图,也被称为圆环图.它在功能上与饼图相同,只是中间有一个空白,并且能够同时 ...
- MP4文件如何转换成GIF动态图?两种方法帮你搞定
要将 MP4 文件转换为 GIF 动态图,您可以使用一些免费的在线工具或者软件进行转换.以下是两种常用的方法: 方法一:使用软件 1.下载并安装一个视频转换软件,例如 FFmpeg 或者 GifCam ...
- 潇洒郎:GMIP——美图秀秀——两种方法——图片透明化,游戏界面人物,对象需要透明
今天跟大家分享一下如何将图片处理为透明化.因为做游戏界面的时候我们为了不让界面显得很突兀.看起来不和谐,所以需要将图片该透明的透明. 先说下图片小知识: 将图片划分为4维通道:RGBA.其中RGB代表 ...
最新文章
- 给妹子讲python-S01E15详解python迭代环境
- PDF与doc格式互换
- 家用计算机键盘图,电脑键盘示意图,详细教您如何正确的使用键盘
- linux星期六字符,linux shell系列10 判断某个月中的星期六和星期天
- 【B站视频笔记】linux 进程间通信(ipc)信号(软中断信号)signal库函数、可靠信号和不可靠信号、信号集sigprocmask(信号掩码、信号递达Delivery、信号未决Pending)
- Kotlin实战指南九:延迟初始化
- spring+redis自主实现分布式session(非spring-session方式)
- short s=1;s=s+1有问题吗?short s=1;s+=1;有问题吗?
- JAVA程序员面试32问(附答案)(转载)
- JavaParser使用指南
- python k线斜率计算公式_通达信K线斜率指标公式
- iOS-UIGraphics将两个图片合并成一张
- Linux驱动设计——硬件基础
- elementui icon图标大全
- 互联网发展十几年,你错过了哪些创业机会
- TiDB 高并发写入常见热点问题及规避方法
- String字符串的最大长度是多少?
- 一文详解TDSQL PG版Oracle兼容性实践
- vscode Vue ts 自定义模板
- SSD刮目相看 希捷750GB混合硬盘评测
热门文章
- 【Office Word 2016】定义新的多级样式,输入编号格式,点击不出现输入光标问题
- 微服务追踪SQL(支持Isto管控下的gorm查询追踪)
- ppt演示,怎么变看备注,变演示,而投影的屏幕上不显示备注?
- 【C#】图片按照规定尺寸和大小保存
- 名帖223 赵孟頫 行书三跋《韩滉五牛图卷》
- 2021-08-05 JavaScript
- LVDS、LVPECL、CML、miniLVDS、RSDS
- Day87.二手房管理: 数据字典 (zTree组件)、小区管理
- 微信小程序view标签内容关于文本过长,自动换行对的问题
- c语言中希尔排序的程序,c语言实现希尔排序算法