[EasyX]png透明贴图函数,简单实用

目录

一、前言

二、源代码

三、解析


一、前言

众所周知,透明贴图对于计算机绘图(在屏幕上画画)来说灰常重要,不然你的程序就是这个样子的↓

不能说难受,只能说是灰常难受。主要原因吗......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>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值