G3.【C语言】EasyX的窗口坐标体系和绘制基本图形

1a0ff46a43894c3fb33fd08e0fd18a43.png

左上角是坐标原点

注意标题栏不计入坐标中

getwidth()获取窗口宽度 getheight()获取窗口高度

画点头文件

COLORREF getpixel(int x, int y);				// Get pixel color
void putpixel(int x, int y, COLORREF color);	// Set pixel color

画线头文件

线的坐标

void line(int x1, int y1, int x2, int y2);		// Draw a line

线的颜色

void setlinecolor(COLORREF color);	// Set line color

 

线的样式

/* Pen Styles */
#define PS_SOLID            0 
#define PS_DASH             1       /* -------  */
#define PS_DOT              2       /* .......  */
#define PS_DASHDOT          3       /* _._._._  */
#define PS_DASHDOTDOT       4       /* _.._.._  */
#define PS_NULL             5
#define PS_INSIDEFRAME      6
#define PS_USERSTYLE        7
#define PS_ALTERNATE        8
#define PS_STYLE_MASK       0x0000000F

 

画正矩形头文件

无填充

void rectangle	   (int left, int top, int right, int bottom);	// Draw a rectangle without filling

有填充

void fillrectangle (int left, int top, int right, int bottom);	// Draw a filled rectangle with a border

 画圆角矩形头文件

无填充

roundrect	   (int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight);		// Draw a rounded rectangle without filling

画圆头文件

circle		(int x, int y, int radius);		// Draw a circle without filling
void fillcircle (int x, int y, int radius);		// Draw a filled circle with a border
void solidcircle(int x, int y, int radius);		// Draw a filled circle without a border
void clearcircle(int x, int y, int radius);		// Clear a circular region

画椭圆头文件

void ellipse	 (int left, int top, int right, int bottom);	// Draw an ellipse without filling
void fillellipse (int left, int top, int right, int bottom);	// Draw a filled ellipse with a border
void solidellipse(int left, int top, int right, int bottom);	// Draw a filled ellipse without a border
void clearellipse(int left, int top, int right, int bottom);	// Clear an elliptical region

画折线头文件

void polyline	 (const POINT *points, int num);								// Draw multiple consecutive lines

 

 

代码实现

#include <stdio.h>
#include <easyx.h>
void  drawShape()
{
	putpixel(50,50,RED);//绘制一个点(X,Y,颜色)
	setlinecolor(BLUE);//设置线的颜色,写在前面
	setlinestyle(PS_SOLID,3);//设置样式,SOLID实心,3(3个像素)影响line和rectangle
	line(0, 0, 640, 480);//画线(写在后面)(起始点横坐标,起始点纵坐标,终止点横坐标,终止点纵坐标)类比向量
	//画正矩形****************************************************************************************************************
	rectangle(100,0,80,50);//用两个点画无填充有框正矩形(起始点横坐标,起始点纵坐标,终止点横坐标,终止点纵坐标)
	setfillcolor(YELLOW);//一定要在绘制之前设置填充颜色
	fillrectangle(500, 200, 400, 90);//用两个点画填充正矩形
	solidrectangle(200, 500, 90, 400);//填充无边框正矩形
	//*************************************************************************************************************************
	//画圆角矩形**************************************************************************************************************
	setfillcolor(RED);
	roundrect(30,100,100,260,20,70);//前四个是矩形坐标,后两个分别是“圆”的宽度和高度(可为圆或椭圆)(长轴 短轴)))
	fillroundrect(30 + 200, 100, 100 + 200, 260, 20, 70);//填充有边框圆角矩形
	solidroundrect(30+500, 100, 100+500, 260, 20, 70);//填充无边框圆角矩形
	//*************************************************************************************************************************
	circle(50,50,20);//圆心坐标,半径
	ellipse(120, 409, 21, 49);//画椭圆
	POINT points[] = { {0,0},{20,20},{10,60} };//数组存储折线的”折点“
	polyline(points,3);//调用数组的3个”折点“

}
int main()
{
	initgraph(640,480,EX_SHOWCONSOLE);
	setbkcolor(RGB(57, 155,143));//设置背景颜色
	cleardevice();//填充颜色
	drawShape();//一定要写,否则无法绘制图形
	getchar();
	return 0;
}

效果 

703ed45fbed24461a3cfa76ffc1f73e8.png

EasyX 文档 - 图形绘制相关函数https://docs.easyx.cn/zh-cn/drawing-func

 

 

 

 

 

 

 

 

可以通过以下步骤使用EasyX读取坐标点文件并绘制图形: 1. 打开文件并读取坐标点数据,例如txt文件中每行格式为"x y",可以使用ifstream和getline函数来读取数据。 ```c++ ifstream f("data.txt"); string line; while (getline(f, line)) { istringstream iss(line); int x, y; iss >> x >> y; // 存储坐标数据 } f.close(); ``` 2. 创建绘图窗口并设置绘图参数,例如背景色、坐标轴等。 ```c++ initgraph(width, height); setbkcolor(WHITE); setlinecolor(BLACK); setlinestyle(PS_SOLID, 1); settextstyle(16, 0, _T("宋体")); ``` 3. 绘制坐标轴及其他辅助线,例如x轴和y轴。 ```c++ line(0, height / 2, width, height / 2); // x轴 line(width / 2, 0, width / 2, height); // y轴 ``` 4. 遍历坐标点数据并将其转换为屏幕坐标,然后使用line函数或者circle函数绘制图形。 ```c++ for (int i = 0; i < points.size(); i++) { int x = points[i].x + width / 2; int y = height / 2 - points[i].y; circle(x, y, 2); } ``` 5. 关闭绘图窗口。 ```c++ closegraph(); ``` 完整代码如下: ```c++ #include <graphics.h> #include <fstream> #include <sstream> #include <vector> using namespace std; struct Point { int x; int y; }; int main() { int width = 600; int height = 600; vector<Point> points; ifstream f("data.txt"); string line; while (getline(f, line)) { istringstream iss(line); int x, y; iss >> x >> y; points.push_back({ x, y }); } f.close(); initgraph(width, height); setbkcolor(WHITE); setlinecolor(BLACK); setlinestyle(PS_SOLID, 1); settextstyle(16, 0, _T("宋体")); line(0, height / 2, width, height / 2); line(width / 2, 0, width / 2, height); for (int i = 0; i < points.size(); i++) { int x = points[i].x + width / 2; int y = height / 2 - points[i].y; circle(x, y, 2); } closegraph(); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值