C语言绘图EasyX图形库基础(笔记)

2023-11-10

在电脑已经安装了vs编译器的情况下在浏览器输入EasyX的官网网址http://easyx.cn下载EasyX图形库根据安装提示对应VS版本安装即可 。

// EasyX.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。

//在电脑已经安装了vs编译器的情况下在浏览器输入EasyX的官网网址http://easyx.cn下载EasyX图形库根据安装提示对应VS版本安装即可
#include <stdio.h>//导入stdio.h头文件来支持getchar()函数让窗体关闭延缓
#include <easyx.h>//导入下载好的easyx图像库头文件,他包涵了绘制图形的各类函数。
#include <math.h>//导入math头文件,即可使用cos等转弧度制的函数
#define PI 3.1415926//定义常量符号圆周率为PI

int main()
{
	//1.创建绘图窗体
	//使用easyx图形库中的initgraph函数创建一个绘图窗口并且设置宽和高
	initgraph(800, 600);

	//2.反转物理轴
	//使用easyx图形库中的setaspectratio(x,y)设负值可以反转物理轴的方向
	setaspectratio(1, -1);

	//3.定义逻辑坐标
	//使用easyx图形库中的setorigin函数创建逻辑坐标起点
	setorigin(400, 300);

	//4.画点
	//使用easyx图形库中的putpixel(y轴,x轴,颜色)函数来画点
	//putpixel(0,0,RED);
	//putpixel(200, 200, YELLOW);
	//putpixel(200, -200, CYAN);
	//putpixel(-200, 200, WHITE);
	//putpixel(-200, -200, GREEN);
	//我们可以使用rand函数随机生成这些点
	/*int y, x;
	for (int i = 0;i < 1000;i++) {
		y = rand() % (800 + 1) - 400;
		x = rand() % (600 + 1) - 300;
		putpixel(y, x, WHITE);
	}*/

	//5.画直线
	//使用easyx图形库中的line函数来画直线前面两个参数以y轴和x轴设起点,后面为y轴和x轴设结束点
	//line(200, -200, -200, 200);
	//line(200, 200, -200, -200);

	//6.画圆
	//使用rasyx图形库中的circle函数来画圆有三个参数为在当前绘图窗口这个圆的中心点y轴,中心点x轴,圆的半径,前面那个参数为物理坐标
	//circle(0, 0, 300);
	//画同心圆
	/*for (int r = 10;r <= 300;r += 10) {
		circle(0, 0, r);
	}*/

	//7.画矩形
	//使用easyx图形库中的rectangle来画矩形
	//rectangle(-200, 100, 200, -100);

	//8.画椭圆
	//使用easyx图形库中的initgraph函数来画椭圆,逻辑上椭圆是在矩形中画的
	//ellipse(-200, 100, 200,-100);

	//9.画椭圆矩形
	//使用easyx图形库中的roundrect来画椭圆矩形,前面四个参数设矩形,后面两个设椭圆矩形的圆角尺寸
	//roundrect(-200, 100, 200, -100, 200, 100);
	
	//10.画扇形
	//使用easyx图形库中的pie函数来画扇形,前面四个参数相当于椭圆,第三个参数设轴心,第四个参数设圆周率取角需要定义常量符号PI为3.14
	//pie(-200, 100, 200, -100, 0, PI / 4);

	//11.画圆弧
	//使用easyx图形库中的arc函数来画圆弧,前面四个参数相当于椭圆,第三个参数设轴心,第四个参数设圆周率取角需要定义常量符号PI为3.14
	//arc(-200, 100, 200, -100, 0, PI / 4);

	//12.画三角形
	//通过line函数画线的方式画一个三角形
	/*line(0, 200, 200, -200);
	line(200, -200, -200, -200);
	line(-200, -200, 0, 200);*/

	//12.画多边形
	//使用easyx图形库中的polygon函数来画多边形更加便捷,只需要提供多边形的顶点即可
	//POINT poins[] = { {200,200},{200,-200},{-200,-200},{-200,200} };//依次设需要的多边形每个角的顶点
	//polygon(poins, 4);//这里决定取多少个角的多边形

	//13.画五边形与更多边形
	//创建一个五边形,弧度制中的一个3.14为180度弧度
	/*double theta = PI / 2;//二分之圆周率等于90度
	double delta = 2 * PI / 5;//我们拿360度除以5即72度,这个五边形的每个边为72弧度
	int r = 200;//设半径为200
	POINT poins[5];
	for (int i = 0;i < 5;i++) {
		poins[i].y = cos(theta + i * delta) * r;//获得y轴坐标
		poins[i].x = sin(theta + i * delta) * r;//获得x轴坐标
	}
	polygon(poins, 5);*/

	//创建一个六边形,弧度制中的一个3.14为180度弧度
	/*double theta = PI / 2;//二分之圆周率等于90度
	double delta = 2 * PI / 6;//我们拿360度除以5即72度,这个五边形的每个边为72弧度
	int r = 200;//设半径为200
	POINT poins[6];
	for (int i = 0;i < 6;i++) {
		poins[i].y = cos(theta + i * delta) * r;//获得y轴坐标
		poins[i].x = sin(theta + i * delta) * r;//获得x轴坐标
	}
	polygon(poins, 6);*/

	//创建一个15边形,弧度制中的一个3.14为180度弧度
	/*double theta = PI / 2;//二分之圆周率等于90度
	double delta = 2 * PI / 15;//我们拿360度除以5即72度,这个五边形的每个边为72弧度
	int r = 200;//设半径为200
	POINT poins[15];
	for (int i = 0;i < 15;i++) {
		poins[i].y = cos(theta + i * delta) * r;//获得y轴坐标
		poins[i].x = sin(theta + i * delta) * r;//获得x轴坐标
	}
	polygon(poins, 15);*/

	//14.画不规则图形
	//不规则图形M图形
	//POINT poins[] = { {-200,200},{0,50},{200,200},{400,0},{200,150},{0,25},{-200,150},{-400,0} };
	//polygon(poins, 8);

	//15.封闭与不封闭图形
	//我们使用polygon函数画图第一个点和最后一个点总是会链接使得图形封闭
	//我们可以用polyline来画不封闭的图形,这个函数和polygon函数的区别就是封闭和不封闭而已
	//POINT poins[] = { {-400,0},{-200,-200},{0,50},{200,-200},{400,0} };
	//polyline(poins, 5);

    //16.描边颜色
	//以上我们所画的图形皆为描边类型我们可以用se tliencolor(颜色)绘图的前面设置描边的颜色
	//setlinecolor(YELLOW);//设描边颜色为黄色
	//circle(0, 0, 200);//画一个圆直径为200b

    //17.线条样式
	//我们可以使用setlinetyle()函数在画线之前定义线的样式参数一为样式,参数二为大小单位是像素
	/*setlinestyle(PS_SOLID, 4);//实线
	line(-400, 250, 400, 250);
	setlinestyle(PS_DASH,4);//虚线
	line(-400, 200, 400, 200);
	setlinestyle(PS_DOT);//点线
	line(-400, 150, 400, 150);
	setlinestyle(PS_DASHDOT);//线点线
	line(-400, 100, 400, 100);
	setlinestyle(PS_DASHDOTDOT);//线点点线
	line(-400, 50, 400, 50);
	setlinestyle(PS_NULL);//不可见
	line(-400, 0, 400, 0);

	//还可以设置线的端点样式
	// 端点为PS_ENDCAP_ROUND,圆形
	setlinestyle(PS_ENDCAP_ROUND, 16);
	line(-300, -50, 300, -50);
	// 端点为PS_ENDCAP_SQUARE,方形
	setlinestyle(PS_ENDCAP_SQUARE, 16);
	line(-300, -100, 300, -100);
	// 端点为PS_ENDCAP_FLAT,平坦
	setlinestyle(PS_ENDCAP_FLAT, 16);
	line(-300, -150, 300, -150);*/

	//端点样式还可以为多边图形的连接处设端点样式
	// 连接为PS_JOIN_BEVEL,斜面
	/*setlinestyle(PS_JOIN_BEVEL, 64);
	POINT points1[3] = { {-150, 100}, {0, 200}, {150, 100} };
	polyline(points1, 3);
	// 端点为PS_JOIN_MITER,斜接
	setlinestyle(PS_JOIN_MITER, 64);
	POINT points2[3] = { {-150, 0}, {0, 100}, {150, 0} };
	polyline(points2, 3);
	// 端点为PS_JOIN_ROUND,圆弧
	setlinestyle(PS_JOIN_ROUND, 64);
	POINT points3[3] = { {-150, -100}, {0, 0}, {150, -100} };
	polyline(points3, 3);*/

    //17.可填充图形
	//我们在画图函数前面学的描边绘图函数前面加solid即可绘制填充图,与描边绘图函数的区别仅仅是前面加了solid
	//solidcircle(0,0,200);
	//setfillcolor可以修改填充的颜色
	//setfillcolor(YELLOW);
	//solidcircle(0, 0, 200);

    //18.即描边又填充
	// 设置描边颜色为红色
    //setlinecolor(RED);
    // 设置描边线形为虚线,粗细为12。
    //setlinestyle(PS_DASH, 12);
    // 设置填充颜色为黄色
    //setfillcolor(YELLOW);
    // 绘制即描边又填充的圆形
    //fillcircle(0, 0, 200);

    //19.窗体颜色
    //使用setbkcolor函数设置窗体背景颜色
    //但是窗体在创建时默认为黑色,我们需要清除所有才能重新涂新的颜色
    //setbkcolor(WHITE);
    //使用cleardevice函数清除窗体
	//cleardevice();


	//使用getchar函数来延缓绘图窗体的关闭时间,直到用户按下任意键后关闭窗体,这个函数需要调用stdio.h头文件
	getchar();
	//使用easyx图形库中的closegraph函数来关闭我们创建的绘图窗口
	closegraph();
	return 0;
}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言绘图EasyX图形库基础(笔记) 的相关文章

随机推荐

  • uos,qt,linuxdeployqt,qt-installer-framework, 生成安装包的记录

    注 使用源码生成安装包的环境要求 已安装QT v5 5 24 DTK QTcreator linuxdeployqt qt installer framework v5 9 的UOS v20 1 打开QTcreator 新建项目 2 选择侧
  • python随机生成验证码,数字+大小写字母

    ASCII码的对照链接 大写字母的十进制范围是 65 91 小写字母的十进制范围是 97 123 数字的十进制范围是 48 58 思路 1 先在空链表中添加大小写字母和数字 2 从列表中随机选择四个验证码 3 将列表转化成字符串输出 代码如
  • python 进行排序的两种方式 sort和sorted

    方法1 用List的成员函数sort进行排序 方法2 用内建函数sorted进行排序 sort函数定义 sort cmp None key None reverse False sorted函数定义 sorted iterable cmp
  • Cannot invoke “String.equalsIgnoreCase(String)“ because “code“ is null

    问题 同时开启多个项目 端口号不一致导致项目前后端错乱匹配 解决办法 后端 ruoyi admin下的application yml中的port 端口号 前端 vue config js里的port 端口号修改一致
  • cpp 解析HTML之 htmlcxx

    html与xml格式上比较相似 但xml不并一定能支持html的解析 这里介绍一个c 解析html的开源项目 htmlcxx 一 代码示例 1 项目源码下载之后 使用vs打开即可 默认为生成 lib静态库及MTd模式 可以在属性中修改指定为
  • httprunner测试框架3--har2case录制脚本

    har2case录制脚本 录制脚本 只是一个过渡 可以将录制的 har脚本快速转化成httprunner脚本文件 不能依靠录制 har2case可以将 har文件转化成yaml格式或者json格式的httprunner的脚本 可以借助fid
  • java代码kafka初始化producer和consumer

    目录 一 初始化producer对象 序列化消息 生产者发送消息的三种方式 kafka生产者其它详细知识 二 初始化consumer对象 反序列化消息 consumer取消订阅的方式consumer unsubscribe 使用自定义的序列
  • 回溯法解决地图填色问题

    目录 回溯法 最大度优先 最少可选颜色优先 向前探测 随机产生不同规模的图 分析算法效率与图规模的关系 四色 回溯法 回溯法的基本思想是采用递归和深度优先搜索的方法 尝试在一组可能的解中搜索出符合要求的解 在搜索过程中 若发现当前所选的方案
  • 颜色值不透明度对应表(0%-100%)

    不透明度 ps 可以理解为alpha 0 1的值
  • 腾讯大佬告诉你,写Python到底用什么IDE合适

    不管你是 Python 新手还是老鸟 肯定纠结过一个问题 到底用什么编辑器写 Python 代码好 为此 我们调查了数十位鹅厂程序猿们爱用的 Python IDE 从他们对每款编辑器的看法中 也许能给你一点启示 入门Python其实很容易
  • lzma sdk文件压缩与解压

    最新版的lzma sdk可以去SourceForge上面获取 具体地址为点击打开链接 7z官网点击打开链接 英文版 点击打开链接 中文版 我用lzma sdk主要是为了用来压缩和解压文件用的 其实适当的用法可以用来制作安装包 因为安装包也是
  • 在Linux的Ubuntu系统下安装QT及相关环境配置

    安装QT 从官网下载QT的安装包 在本地安装 本次使用的是Ubuntu18 06以及QT5 14 2 下文皆使用此版本作为示例 首先安装QT 具体操作如下 1 使用cd命令 cd home usr download 切换至安装包所在的目录下
  • Proteus仿真时数码管不能动态显示的问题及解决方法

    今天做Proteus仿真时遇到了数码管不能动态显示的问题 我的程序是用单片机P1口控制数码管段选 P2口低四位控制数码管位选 数码管1ms显示一位 全部刷新需要4ms 正常情况下人眼是感受不到这个速度下数码管的刷新过程的 所以他应该是这个样
  • 【图文解析 】Java中的Liu、继承、组合

    Alt Shift s 快捷键
  • Vue Element-ui el-table sortablejs 表格拖拽排序

    首先要在项目中本地安装 sortablejs 执行 npm install sortablejs save 然后在要实现表格拖拽的 vue文件中 引入 sortablejs import Sortable from sortablejs 基
  • PPPOE协议工作流程

    PPPoE Point to Point Protocol over Ethernet 基于以太网的点对点协议 的工作流程包含发现 Discovery 和会话 Session 两个阶段 发现阶段是无状态的 目的是获得PPPoE 终端 在局端
  • A5M2使用

    目录 一 修改语言 二 连接数据库 三 SQL相关 3 1 新建SQL 3 2 生成增删改查SQL 方式一 方式二 3 3 生成批量插入insert语句 3 4 生成DDL 3 5 SQL整形 3 6 SELECT 之后修改数据 3 7 生
  • 网络编程的无冕之王-Netty入门和核心组件介绍

    最近我在研究Netty 之前只是经常听说 并没有实际做过研究 为什么突然要好好研究一下它 主要是因为前段时间 我在看RocketMQ底层原理的时候发现它的底层的网络通信都是基于Netty 然后网上一查 果然 大家太多的耳熟能详的工具组件 都
  • 物理射线、导航网格寻路

    每日一句 努力追上你的每天都是美好的 因为未来可期 目录 射线检测 需求1 物体射线到一定距离会改变物体状态 降落伞 需求2 鼠标点哪走哪 寻路 射线 点击小地图 人物到达指定位置 需求3 做准心效果 射线碰到物体有UI跟随效果 寻路系统
  • C语言绘图EasyX图形库基础(笔记)

    在电脑已经安装了vs编译器的情况下在浏览器输入EasyX的官网网址http easyx cn下载EasyX图形库根据安装提示对应VS版本安装即可 EasyX cpp 此文件包含 main 函数 程序执行将在此处开始并结束 在电脑已经安装了v