C语言图形库——EasyX基本贴图
在C语言的学习过程中,接触最多的就是黑乎乎的DOS窗口,这也是在消磨学习者的兴趣,学到最后可能还不知道C语言到底能做什么,难道就是输入输出数据吗?当然不是,C的用处很广泛,这里不做讨论。我们能不能用C语言做些好玩的东西,当然可以,我们可以做游戏,可以做动画,还有很多能装逼的东西,在外行眼里看来,你的逼格高的就不是一点点了。做游戏、做动画一定要用到图片、音频等,怎么用C语言显示出来呢?这里我们就要用到EasyX库了,在文章末尾有百度网盘链接,下载后双击安装即可,但有编译器限制,VC、VS都可以安装,Dev C++目前不能安装EasyX库。文章的末尾给出了几个小项目。
当我们安装好EasyX库后,该怎么用呢?我们首先来显示一张图片,首先我们要创立一个图形窗口(要建立.cpp文件才可以用EasyX,因为EasyX库是属于C++范畴的,但在编程风格上用的是C语言)。
1、添加头文件:
#include <graphics.h>
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)处,这是一个坐标
最终的程序是这样的:
在有的时候,我们想要把一张图片的某一部分显示在另一张图片上,例如,把图1中的马显示在以图2为背景的图中。
图1
图2
这个时候我们不能直接贴,否则无法去除图1中的背景,如图3结果。这很显然不是我们想要的。
图3
而我们真正想要的是这样的,如图4。
图4
这个时候我们需要用到图片编辑软件,只要能抠图就行,PS是最佳选择,此处就以PS为例(文章末尾有PS百度网盘连接,安装过程十分简单,不做赘述),选择图1用PS打开,W键用于抠图,把这个圆形光标调小一些,仔细把马选中,Ctrl+c复制,然后选择文件->新建一个黑底剪切板,Ctrl+v粘贴,便可得到图5,把它导出来,继续选择文件->新建一个白底剪切板,Ctrl+v粘贴,在用W键把这个马选择出来,鼠标右键填充,选择黑色,此时在右键选择取消选择便可得到图6,再把它导出来。
图5
图6
将图2、图5、图6放在项目中,分别命名为bk.jpg、1.png、2.png。
代码如下:
#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>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.pngputimage(50, 100, //显示的位置286, 167,//图片的大小,也可自行设置大小&image2, //选择需要贴的图0, 0, //从该图片的起始位置开始显示SRCAND //绘制出的像素颜色 = 屏幕颜色 & 图像颜色);//再贴彩黑图,即1.pngputimage(50, 100, 286, 167,&image1, 0, 0, //与上相同SRCPAINT //绘制出的像素颜色 = 屏幕颜色 | 图像颜色);system("pause");return 0;
}
为什么这样可以把马显示在图2中呢?
我们知道,三原色可以构成任何一种颜色,其中黑色的三原色构成为(0,0,0),白色为(255,255,255),其余的颜色在0—255之间。
在8位数与运算中,任何数与255 相与都等于该数,与0 相与都等于0 。比如我们拿100和255相与,255的二进制表示就是11111111,100的二进制是01100100,二者相与自然就是01100100,也就是100,后面的或运算也同理。我们先拿黑白图(图6)按与的形式贴在背景图(图2)上,因为白色的三原色数值是最大的,非白色与白色等于非白色,又因为黑色的三原色数值最小,所以非黑色与黑色等于黑色。示意图如下:
接着按或贴彩黑图(图5),一样的道理,在8位数或运算中,任何一个数与0 相或 都等于该数,非黑色或黑色等于非黑色。示意图如下:
EasyX链接:
链接:https://pan.baidu.com/s/1CTWMbqaATgx663M01vRA5A
提取码:2chn
PS软件链接
链接:https://pan.baidu.com/s/1PfaBDBnq07CnDzvwWIBZ2g
提取码:m3sd
小项目
自定义一个屏保程序
制作一个简易钟表
EasyX常用函数请点此处查看
C语言图形库——EasyX基本贴图相关推荐
- C语言图形库EasyX安装及基本使用
本文章介绍C++用EasyX进行C++基础图形编程介绍. EasyX安装: 1.点击上方超链接,进入官网,点击右侧下载EasyX 2.点击下载后的可执行文件: 3.EasyX安装非常简单,进入可执行文 ...
- C语言图形库——EasyX常用函数
上节讲到贴出一张图片的过程,本节接着介绍一些基本的图形库函数. 头文件 #include <graphics.h> 1.图形窗口背景颜色设置函数: 例 setbkcolor(YELLOW) ...
- c语言使用easyX图形库制作打气球小游戏
大一c语言使用easyX图形库制作打气球小游戏 如果你是入门easyX图形库,那么这个打气球小游戏将会是和不错的入门项目选择,easyX开创了可视化窗口,使用户更加直观的了解到对象的变化,总代码以及素 ...
- 用C语言图形库画一个红色爱心
这次我教大家用代码画一个心,这样你们就可以送给你们的女(男)朋友了.没找到对象的也可以用来表白啊. 1.首先,我去百度找了心形线的函数,如下: 2. 联系高中的数学知识,我们知道:f(x)>0和 ...
- R语言绘制环形树状图
R语言绘制环形树状图 1.主要用到dendextend和circlize包绘图: library(dendextend) library(circlize)# 距离矩阵 d <- dist(US ...
- R语言绘制二维密度图
R语言绘制二维密度图 二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示.二维密度图有几种类型,以下主要 ...
- R语言ggplot2可视化分面图使用facet_wrap函数和facet_grid函数实战
R语言ggplot2可视化分面图使用facet_wrap函数和facet_grid函数实战 目录 R语言ggplot2可视化分面图使用facet_wrap函数和facet_grid函数实战
- R语言ggplot2可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram)
R语言ggplot2可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram) 目录
- R语言ggplot2可视化可视化聚类图、使用geom_encircle函数绘制多边形标定属于同一聚类簇的数据点、并自定义每个聚类簇数据点的颜色、多边形框的颜色(Cluster Plot)、主副标题题注
R语言ggplot2可视化可视化聚类图.使用geom_encircle函数绘制多边形标定属于同一聚类簇的数据点.并自定义每个聚类簇数据点的颜色.多边形框的颜色(Cluster Plot).主副标题题注 ...
- R语言ggplot2可视化分面图(facet_wrap)、使用size参数自定义设置分面图标签栏(灰色标签栏)中的标签文本的字体大小
R语言ggplot2可视化分面图(facet_wrap).使用size参数自定义设置分面图标签栏(灰色标签栏)中的标签文本的字体大小 目录
最新文章
- 金蝶 K/3 Cloud 服务端控件编程模型
- 阿里巴巴拿下奥运顶级赞助商
- 转:AMS之dumpsys篇
- GB2312 UTF8 UCS2汉字编码对应表
- android mysql开发工具_Android开发工具--adb的使用
- JDBC是什么?和JDBC程序的基本编写
- 第三章Python快速入门
- JAVA计算机毕设题目大全
- sai钢笔图层怎么移动某条线?
- 如何让网站快速被收录,试试这个方法!
- 中国汽车原始设备制造商的厂内物流市场趋势报告、技术动态创新及市场预测
- Android Hook 实战--替换第三方sdk的类
- N76E003 串口接收字符串,完整输出
- 新一代智慧医疗整体解决方案
- ERP系统的数据安全
- 说不清心里对于这个孩子是什么样的感情
- JAVA + 酷Q开发人工智能QQ机器人
- 【PCL】VoxelGrid滤波器下采样
- PSCAD 出现 TRIANG错误
- html5教程鼠标,利用HTML5 Canvas制作键盘及鼠标动画的实例分享