目录
一、前言
众所周知,透明贴图对于计算机绘图(在屏幕上画画)来说灰常重要,不然你的程序就是这个样子的↓
不能说难受,只能说是灰常难受。主要原因吗......easyx在显示png时透明部分会变成纯黑色,哎。因此我们要采取一些技术手段,比如透明贴图,这样我们就能正常显示png了:
于是经过我两年半的研究,成功写出了一个针对png的透明贴图函数,可以正常的显示png图像,让我们一起来看一下:)
二、源代码
#include<graphics.h>
#include<conio.h>
#include<iostream>
using namespace std;
void transparentimage(int x,int y,IMAGE img){
IMAGE img1;
DWORD *d1;
img1=img;
d1=GetImageBuffer(&img1);
float h,s,l;
for(int i=0;i<img1.getheight()*img1.getwidth();i++){
RGBtoHSL(BGR(d1[i]),&h,&s,&l);
if(l<0.03){
d1[i]=BGR(WHITE);
}
if(d1[i]!=BGR(WHITE)){
d1[i]=0;
}
}
putimage(x,y,&img1,SRCAND);
putimage(x,y,&img,SRCPAINT);
// putimage(x+100,y,&img1);
// putimage(x+200,y,&img);
}
int main(){
initgraph(510,510,1);
setbkcolor(RED);
cleardevice();
IMAGE img;
loadimage(&img,"enemy1.png");
transparentimage(0,0,img);
getch();
return 0;
}
效果大概是这样子:
三、解析
#include<graphics.h>