• 还在每天玩单调的控制台窗口?赶紧进来!!!用EasyX画出自己的优美窗口(万字教程,一文入门)


    EasyX图形库教程

    本文的封面第三章照片来自博客:爱心气球

    img

    前言

      本文章所使用到的资源分享:(均是免费,白嫖万岁)

    1. 在线转换gif动图
    2. qq截图
    3. 在线画图网站:diagrams.net – 流程图
    4. 思维导图软件:Xmind
       
      在这里插入图片描述

     

    1.EasyX是什么?

    EasyX 是针对 C++ 的图形库,可以帮助 C/C++ 初学者快速上手图形和游戏编程。虽然是C++图形库,但是C和C++不分家,只要你学了C语言,或者一门编程语言,那么学习成本都不会很高,学习门槛很低。它是可以帮助我们去实现图形化,优美化的小游戏的工具,例如:贪吃蛇,俄罗斯方块,扫雷等等。

    大部分学校只交基础语法,一直都在黑窗口(也就是我们平时所说的控制台)上练习,同学们都学习很乏味。于是博主给大家出了一个easyx开发软件的教程哦~快乐学编程

     

    2.EasyX的安装

    操作系统:Windows XP(sp3) 及以上操作系统。
    编译环境:Visual C++ 6.0,Visual Studio 2008 至 Visual Studio 2022 (x86 & x64)。

    大家不要拿着devc++,gcc去下个EasyX图形库然后跟博主说我的用不了咧

     

    安装网址(<—点这里)安装过程很简单,跟着指导来即可,而且不需要考虑会不会安装位置不对,在安装的时候它会找到你的vs的安装文件对应的位置进行安装,由于博主的vs版本是2013和2019,所以我安装的也是13和19的(两个都安装了),不出意义的话大家是可以去下载vs2022版本的EasyX的。
     
    在这里插入图片描述

     

    开始教程

     

    特别注意:大家平时写程序怎么创建项目,就怎么创建项目即可,但是注意我们在使用EasyX的时候,源文件后缀要是.cpp

     

    1.基本概念

    1.1颜色

    总所周知,所有的颜色都可以由三原色构成 :

    • R – red – 红色
    • G – green – 绿色
    • B – blue – 蓝色

    简称RGB,也就是说只要有这三种颜色,那么我们可以通过改变这三种颜色的浓度值,即可构成不同的颜色

    在这里插入图片描述

    例如上述画板选中的颜色的值可以表示成RGB(128,128,192)

    其中R G B的值的范围都是0~255

     

    1.2坐标

      没有小看大家,我们在数学中就已经学过平面直角坐标系了,如下

    在这里插入图片描述

     

      而当我们使用EasyX创建的窗口的纵轴方向和上图中的是相反的。如下:

    在这里插入图片描述

     

    2.创建窗口 – 基本框架

      我们在使用EasyX的时候都是去调用图形库里面的接口,说白了就是学习它里面的函数怎么使用。

    涉及接口

    HWND initgraph(int width, int height, int flag = 0);//创建窗口
    
    void closegraph();//关闭窗口
    //参数1决定窗口的宽度,参数2决定窗口的高度,参数三决定窗口的模式
    
    参数3#define SHOWCONSOLE		1		// 显示控制台
    #define NOCLOSE			2		// 不可关闭,就是窗口的❎不见了
    #define NOMINIMIZE		4		// 不可最小化,就是窗口的➖不见了  
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

     

    代码演示1:

    #include//记得加上这个头文件
    
    #include
    
    int main()
    {
       
    	initgraph(1024, 480,SHOWCONSOLE);
        
    	getchar();//防止窗口一闪而过,我们让其等待输出停一会儿
    
    	closegraph();//关闭窗口
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

      在我们创建的窗口中,宽度和高度的单位是:像素点,当然了,我们要看完整的函数声明,是可以对函数名进行,右键 > 转到定义去查看的

     

    大家可以将试一试这几个参数的效果,查看更多参数可以右键>转到定义,就可以看到更到的宏参数了

    上面的三个参数是可以同时放进去的,就像这样initgraph(1024, 480,SHOWCONSOLE | NOCLOSE | NOMINIMIZE);

     

    再次温馨提示,源文件必须是.cpp文件

     

    在这里插入图片描述

      没错上面的窗口就是我们创建出来的窗口,我们发现它的窗口名不再是对应的项目路径,而且右侧已经不再是滚动条,说明此时它已经不是控制台窗口了,没错这个现在看起来还是很low,下面我们就自己设计一下自己的窗口

     

    3.颜色设置

     

     咱们先将可以设置颜色的接口介绍一遍,后面都会使用到

    3.1背景颜色

      使用到的接口

    void setbkcolor(COLORREF color);//设置背景颜色,参数填入颜色RGB值
    
    void cleardevice();	//清空设备
    
    • 1
    • 2
    • 3

      当这两个接收一起使用时,才能达到效果

     

    3.2设置线条颜色
    void setlinecolor(COLORREF color);
    
    • 1

     

    3.3设置文本颜色
    void settextcolor(COLORREF color);
    
    • 1

     

    3.4设置填充颜色
    void setfillcolor(COLORREF color);
    
    • 1

     

    4样式设置

     

     咱们先将可以设置样式的接口介绍一遍,后面都会使用到

     

    4.1设置背景样式

    可以设置成是背景是填充还是覆盖

    void setbkmode(int mode);//设置背景模式
    
    参数:
    #define TRANSPARENT         1   //透明的
    #define OPAQUE              2   //覆盖的
        
    默认不设置的情况下是覆盖的的
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

     

    4.2设置线条样式
    void setlinestyle(int style, int thickness = 1, const DWORD *puserstyle = NULL, DWORD userstylecount = 0);
    
    //第一个参数是设置线条的样式 -- 实线,虚线等
    参数1#define PS_SOLID            0
    #define PS_DASH             1       /* -------  */
    #define PS_DOT              2       /* .......  */
    #define PS_DASHDOT          3       /* _._._._  */
    #define PS_DASHDOTDOT       4       /* _.._.._  */
        
    //参数2是设置线条的宽度,单位是像素点
        
    第三个参数,第四个参数大家可以不填
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

     

    4.3设置文本样式
    void settextstyle(int nHeight, int nWidth, LPCTSTR lpszFace);
    
    //参数1:文本高度
    //参数2:文本宽度
    //参数3:文本的字体 -- 大家可以理解成就是填一个const char*的参数
    
    参数三:
    1. "宋体"
    2. "楷体"
    很多很多,大家可以试一试word里面的那些字体哪些可以用    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

     
    ⚠:千万注意,千万注意,千万注意,很多同学在使用文本接口的时候经常报错,这是应为需要修改项目属性,我们要将使用 Unicode 字符集 — 改成 使用多字节字符集
     
    在这里插入图片描述

     

    5.绘制图形

      你在画板中可以画的图案,几乎都可以做到,下面我们已画圆举例

    画圆示例

    使用的接口

    void circle		(int x, int y, int radius);		//画一个由线条边框组成,无填充的圆
    void fillcircle (int x, int y, int radius);		// 画一个有线条边框,有填充的圆
    void solidcircle(int x, int y, int radius);		//画一个无线条边框,有填充的圆
    
    • 1
    • 2
    • 3

    x y–即圆的坐标,radius – 即圆的半径

     

    代码举例2:

    #include
    
    #include
    
    //1.设置颜色
    void set_color()
    {
       
    	//1.设置背景颜色,要和cleardevice一起使用
    	setbkcolor(RGB(204, 232, 207));//将背景设置成浅绿色
    	cleardevice();
    
    	//2.设置线条颜色
    	setlinecolor(RGB(128, 255, 255));//将线条颜色设置成天蓝色
    
    	//3.设置填充颜色
    	setfillcolor(RGB(255, 201, 14));//设置填充颜色为黄色
        
        //4.设置文本颜色
    	settextcolor(RGB(245, 245, 245));//文本颜色设置成白色
    }
    
    //2.设置样式
    void set_mode()
    {
       
    	//1.将背景设置成透明
    	setbkmode(TRANSPARENT);
    
    	//2.将线条设置成3个像素点宽度
    	setlinestyle(PS_SOLID, 3);
    
    	//3.将文本高度设置成20,宽度设置成10,字体设置成楷体
    	settextstyle(20, 10
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    信息学奥赛一本通2060:【例1.1】计算机输出
    2022世界传感器大会即将开幕 汉威科技邀您共享科技盛宴!
    利用 docker 实现JMeter分布式压测
    【大数据】Apache NiFi 助力数据处理及分发
    java计算商场折扣 判断体重 判断学生成绩等级 验证邮箱 demo
    SpringBoot请求响应
    基于JSP的网上书城平台【数据库设计、源码、开题报告】
    机器学习案例(三):未来销售预测
    【Js】数据处理
    149. SAP UI5 Table 控件数据进行 Excel 导出时如何进行格式控制
  • 原文地址:https://blog.csdn.net/AAxiao_bei/article/details/128019492