使用 EASYX 载入PNG图并透明背景

EASYX库下载地址
我这里用的是测试版(2019-5-29更新),如下图

该版本可以插入PNG图片,但不能做到去透明化,如下图:

虽然我的png图载入了,但是透明部分也会变成黑色,明显没有透明化,下面就是解决这个问题的方法。

#include <conio.h>
#include <graphics.h>//函数声明
void drawAlpha(IMAGE* picture, int  picture_x, int picture_y); //x为要载入图片的X坐标,y为Y坐标
void main()
{ initgraph(700, 700, NOMINIMIZE); // 初始化绘图环境,EASYX自带,现定义绘图区分辨率700x700setbkcolor(WHITE);               //用于设置当前绘图背景色,EASYX自带cleardevice();                  //是用当前背景色清空屏幕,并将当前点移至 (0, 0),EASYX自带IMAGE img;loadimage(&img, _T("B.PNG") );  //用于从文件中读取图像,EASYX自带drawAlpha(&img,100,100);     // 载入PNG图并去透明部分_getch();
}// 载入PNG图并去透明部分
void drawAlpha(IMAGE* picture, int  picture_x, int picture_y) //x为载入图片的X坐标,y为Y坐标
{// 变量初始化DWORD *dst = GetImageBuffer();    // GetImageBuffer()函数,用于获取绘图设备的显存指针,EASYX自带DWORD *draw = GetImageBuffer(); DWORD *src = GetImageBuffer(picture); //获取picture的显存指针int picture_width = picture->getwidth(); //获取picture的宽度,EASYX自带int picture_height = picture->getheight(); //获取picture的高度,EASYX自带int graphWidth = getwidth();       //获取绘图区的宽度,EASYX自带int graphHeight = getheight();     //获取绘图区的高度,EASYX自带int dstX = 0;    //在显存里像素的角标// 实现透明贴图 公式: Cp=αp*FP+(1-αp)*BP , 贝叶斯定理来进行点颜色的概率计算for (int iy = 0; iy < picture_height; iy++){for (int ix = 0; ix < picture_width; ix++){int srcX = ix + iy * picture_width; //在显存里像素的角标int sa = ((src[srcX] & 0xff000000) >> 24); //0xAArrggbb;AA是透明度int sr = ((src[srcX] & 0xff0000) >> 16); //获取RGB里的Rint sg = ((src[srcX] & 0xff00) >> 8);   //Gint sb = src[srcX] & 0xff;              //Bif (ix >= 0 && ix <= graphWidth && iy >= 0 && iy <= graphHeight && dstX <= graphWidth * graphHeight){dstX = (ix + picture_x) + (iy + picture_y) * graphWidth; //在显存里像素的角标int dr = ((dst[dstX] & 0xff0000) >> 16);int dg = ((dst[dstX] & 0xff00) >> 8);int db = dst[dstX] & 0xff;draw[dstX] = ((sr * sa / 255 + dr * (255 - sa) / 255) << 16)  //公式: Cp=αp*FP+(1-αp)*BP  ; αp=sa/255 , FP=sr , BP=dr| ((sg * sa / 255 + dg * (255 - sa) / 255) << 8)         //αp=sa/255 , FP=sg , BP=dg| (sb * sa / 255 + db * (255 - sa) / 255);              //αp=sa/255 , FP=sb , BP=db}}}
}

成功后的效果图:

使用 EASYX 载入PNG图并透明背景相关推荐

  1. java图片透明浮水印_PHP 为图片加上浮水印 (含浮水印透明背景处理)

    PHP 要为图片加上浮水印: 就是要将两张图合并在一起, 浮水印的图片要盖在上面. 现实状况还会遇到原图要缩略图后, 浮水印的图片可能也要跟着缩略图, 这些部分再此就不写了, 此部份缩略图可见此篇: ...

  2. python抠透明图_python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图

    因为最近在做深度学习抠图,正好要用到蒙版进行抠图,所以我将抠图代码进行了封装注释,可以直接使用.可能走了弯路,若有高见请一定提出! 主要代码 import cv2 from PIL import Im ...

  3. php缩放gif和png图透明背景变成黑色的解决方法_php技巧

    php缩放gif和png图透明背景变成黑色的解决方法_php技巧 参考文章: (1)php缩放gif和png图透明背景变成黑色的解决方法_php技巧 (2)https://www.cnblogs.co ...

  4. vue 背景透明度_Visual Studio 2017 设置透明背景图

    一.前言 给大家分享一下,如何为VS2017设置透明背景图.下面是一张设置前和设置后的图片. 设置前: 设置后: 二.设置背景图片的扩展程序 我们打开VS的扩展安装界面:[工具]->[扩展和更新 ...

  5. php gif 透明背景,php缩放gif和png图透明背景变成黑色的解决方法,缩放png_PHP教程...

    php缩放gif和png图透明背景变成黑色的解决方法,缩放png 工作中需要缩放一些gif图然后在去Imagecopymerge,可是发现使用了imagecreatetruecolor和imageco ...

  6. 【CSS】PhotoShop 切图 ② ( PhotoShop 切片选择工具 | 清除切片 | 新建基于图层的切片 | 透明背景图片切图 | 根据参考线选择切片 )

    文章目录 一. PhotoShop 切片选择工具 二.清除切片 三.新建基于图层的切片 四.透明背景图片切图 五.根据参考线选择切片 一. PhotoShop 切片选择工具 如果之前使用 切片工具 设 ...

  7. ps—保存透明背景的图,通过拷贝图层,拷贝,剪切,粘贴命令

    "拷贝",剪切,粘贴命令 将图像中选中的区域保存为一个图层,如下图所示,将长方形框住的内容保存为一个图层,按一下"Ctrl+c"再按一下"ctrl+v ...

  8. PS切图保存后的背景图为透明

    1.若想PS切图保存后的背景图为透明,那么则需要在如下图中所示的修改即可,切图后[文件]-->[存储为web格式]-->[PNG-24]: 2.要想在css中的背景图片为相通,则先剪切一个 ...

  9. php gif透明色,php缩放gif和png图透明背景变成黑色的解决方法

    php缩放gif和png图透明背景变成黑色的解决方法 发布于 2014-10-23 14:38:23 | 355 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hy ...

最新文章

  1. Apache Flink 零基础入门【转】
  2. 4、3ds Max 的基本模型和操作 之 3ds Max 的对象操作
  3. python中怎么计数_浅谈python中统计计数的几种方法和Counter详解
  4. Linux!为何他一人就写出这么强的系统?
  5. 前端学习(2026)vue之电商管理系统电商系统之实现分页功能
  6. c语言基本数据类型常量,C语言基础学习基本数据类型-变量和常量
  7. CentOS上使用Docker安装Redis-Cluster (redis6.x)
  8. UE4移动平台上基于物理的着色
  9. 老板催你交圣诞海报设计?PSD源文件素材,直接编辑
  10. 断点下载 (记录上传、或下载的量
  11. Pycharm教程--断点调试
  12. c++函数如何返回一个vector_如何将Python的一个函数进行超时限制
  13. 自制电吉他效果器 DIY PCB(三)原理图与封装 上
  14. 量子计算机优点概括,量子计算机简介
  15. redux 的入门级别使用 讲解
  16. R语言Error in model.frame.default(formula = y ~ ., data = exam.data, drop.unused.levels = TRUE) :
  17. java多边形合并_碎多边形合并 | SuperMap iDesktop Java
  18. HBase2.4.8详细教程(一)HBase环境搭建
  19. 13种内存卡复活方法
  20. 梯度与边缘检测常用算子:Roberts、Prewitt、Sobel、LOG,Canny、Lapacian算子

热门文章

  1. python读取word的方法,Python读取Word(.docx)正文信息的方法
  2. 关于Taro下载附件并保存
  3. 致关闭清华大学软件源的精英的一封信——你们赢了。
  4. linux磁盘挂载之fdisk
  5. 02.telnet远程登录鸿蒙
  6. def func python_python函数之基础
  7. 1912年 斯德哥尔摩 第五届奥运会
  8. linux-help命令,查询shell内置命令帮助文档
  9. adb java_java环境变量配置和adb的配置教程详解
  10. 腾达fh450虚拟服务器,腾达(Tenda)FH450与FH451与F450与F451无线路由器设置上网