C语言图形库——EasyX基本贴图

在C语言的学习过程中,接触最多的就是黑乎乎的DOS窗口,这也是在消磨学习者的兴趣,学到最后可能还不知道C语言到底能做什么,难道就是输入输出数据吗?当然不是,C的用处很广泛,这里不做讨论。我们能不能用C语言做些好玩的东西,当然可以,我们可以做游戏,可以做动画,还有很多能装逼的东西,在外行眼里看来,你的逼格高的就不是一点点了。做游戏、做动画一定要用到图片、音频等,怎么用C语言显示出来呢?这里我们就要用到EasyX库了,在文章末尾有百度网盘链接,下载后双击安装即可,但有编译器限制,VC、VS都可以安装,Dev C++目前不能安装EasyX库。文章的末尾给出了几个小项目。

当我们安装好EasyX库后,该怎么用呢?我们首先来显示一张图片,首先我们要创立一个图形窗口(要建立.cpp文件才可以用EasyX,因为EasyX库是属于C++范畴的,但在编程风格上用的是C语言)。

1、添加头文件:

 #include  

2、定义图像变量:

 IMAGE image1;

IMAGE,通俗的说可视为图,型,和int,char一样,IMAGE image1就是说定义一个图片型变量image1。

3、创立图形窗口:

initgraph(800, 600); 

这个函数就是说建立一个宽为800像素,高为600像素的图形窗口。

4、加载图片:

loadimage(&image1, L"bird.png", 200, 100); 

选择一张图片,我这里的图片名为bird.jpg,将它放在和你源文件同一目录下。这个函数的意思就是说将这张名为bird.png的图片与image1绑定在一块,用image1代表bird.png,并将其宽和高拉伸为200和100像素点。

5、显示图片:

putimage(200,300,&image1);

这个函数的意思就是说将image1显示在所创立的图形窗口的(200,300)处,这是一个坐标
C语言图形库——EasyX基本贴图_第1张图片

最终的程序是这样的:
C语言图形库——EasyX基本贴图_第2张图片
在有的时候,我们想要把一张图片的某一部分显示在另一张图片上,例如,把图1中的马显示在以图2为背景的图中。
C语言图形库——EasyX基本贴图_第3张图片
图1
C语言图形库——EasyX基本贴图_第4张图片
图2
这个时候我们不能直接贴,否则无法去除图1中的背景,如图3结果。这很显然不是我们想要的。
C语言图形库——EasyX基本贴图_第5张图片
图3
而我们真正想要的是这样的,如图4。
C语言图形库——EasyX基本贴图_第6张图片
图4

这个时候我们需要用到图片编辑软件,只要能抠图就行,PS是最佳选择,此处就以PS为例(文章末尾有PS百度网盘连接,安装过程十分简单,不做赘述),选择图1用PS打开,W键用于抠图,把这个圆形光标调小一些,仔细把马选中,Ctrl+c复制,然后选择文件->新建一个黑底剪切板,Ctrl+v粘贴,便可得到图5,把它导出来,继续选择文件->新建一个白底剪切板,Ctrl+v粘贴,在用W键把这个马选择出来,鼠标右键填充,选择黑色,此时在右键选择取消选择便可得到图6,再把它导出来。

C语言图形库——EasyX基本贴图_第7张图片
图5
C语言图形库——EasyX基本贴图_第8张图片
图6

将图2、图5、图6放在项目中,分别命名为bk.jpg、1.png、2.png。
代码如下:

#include
#include
#include

int main()
{
	IMAGE bk, image1, image2;
	initgraph(1000, 600);
	loadimage(&bk,"bk.jpg",1000,600);
	loadimage(&image1, "1.png");
	loadimage(&image2, "2.png");
	putimage(0, 0, &bk);
	//先贴黑白图,即2.png
	putimage(
			50, 100, //显示的位置
			286, 167,//图片的大小,也可自行设置大小
			&image2, //选择需要贴的图
			0, 0,	//从该图片的起始位置开始显示
			SRCAND	//绘制出的像素颜色 = 屏幕颜色 & 图像颜色
			);
	//再贴彩黑图,即1.png
	putimage(
			50, 100, 286, 167,&image1, 0, 0,	//与上相同
			SRCPAINT							//绘制出的像素颜色 = 屏幕颜色 | 图像颜色
			);
	system("pause");
	return 0;
}

为什么这样可以把马显示在图2中呢?
我们知道,三原色可以构成任何一种颜色,其中黑色的三原色构成为(0,0,0),白色为(255,255,255),其余的颜色在0—255之间。
在与运算中,两个数相与等于较小值,我们先拿黑白图(图6)按的形式贴在背景图(图2)上,因为白色的三原色数值是最大的,非白色白色等于非白色,又因为黑色的三原色数值最小,所以非黑色黑色等于黑色。示意图如下:
C语言图形库——EasyX基本贴图_第9张图片
接着按或贴彩黑图(图5),一样的道理,在或运算中,两个数相或等于较大值,非黑色黑色等于非黑色。示意图如下:
C语言图形库——EasyX基本贴图_第10张图片

EasyX链接:
链接:https://pan.baidu.com/s/1CTWMbqaATgx663M01vRA5A
提取码:2chn

PS软件链接
链接:https://pan.baidu.com/s/1PfaBDBnq07CnDzvwWIBZ2g
提取码:m3sd

小项目
自定义一个屏保程序

制作一个简易钟表

EasyX常用函数请点此处查看

你可能感兴趣的:(EasyX库)