使用 EASYX 载入PNG图并透明背景 您所在的位置:网站首页 抠图jpg格式的白底怎么去掉黑底 使用 EASYX 载入PNG图并透明背景

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

2024-07-11 13:58| 来源: 网络整理| 查看: 265

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

EASYX库下载地址 我这里用的是测试版(2019-5-29更新),如下图 该版本可以插入PNG图片,但不能做到去透明化,如下图: 在这里插入图片描述 虽然我的png图载入了,但是透明部分也会变成黑色,明显没有透明化,下面就是解决这个问题的方法。

#include #include //函数声明 void drawAlpha(IMAGE* picture, int picture_x, int picture_y); //x为要载入图片的X坐标,y为Y坐标 void main() { initgraph(700, 700, NOMINIMIZE); // 初始化绘图环境,EASYX自带,现定义绘图区分辨率700x700 setbkcolor(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 int srcX = ix + iy * picture_width; //在显存里像素的角标 int sa = ((src[srcX] & 0xff000000) >> 24); //0xAArrggbb;AA是透明度 int sr = ((src[srcX] & 0xff0000) >> 16); //获取RGB里的R int sg = ((src[srcX] & 0xff00) >> 8); //G int sb = src[srcX] & 0xff; //B if (ix >= 0 && ix = 0 && iy


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有