C语言编写Easyx图形库的简单界面设计辅助工具

这篇博客介绍了一位编程新手如何使用Easyx图形库来创建一个可视化图形坐标系统的程序。用户可以通过输入画布的宽和高,然后通过鼠标点击在画布上创建矩形和标记点,程序会自动输出图形的坐标参数。博主分享了源代码,并邀请读者根据需求进行修改和扩展,同时欢迎对代码提出改进建议。
摘要由CSDN通过智能技术生成

最近在学习Easyx的使用

在使用图形库Easyx设计界面时常常因为坐标参数的设置而烦恼,少量图形还可以反复调试,而面对大量对象必然耗费大量时间。
于是我就在想能不能设计一个程序可以将图形坐标可视化地反映并输出。

程序功能大致如下:

1,输入画布的宽和高并创建相应窗口

2,连续单击鼠标左键画布上两个坐标,并以这两点为顶点作矩形,输出矩形的坐标参数。

3,单机鼠标中键,在画布上标记点并输出点的坐标

( 由于我的创作需求,我只做了矩形和点的部分。我把源代码放在下面,大家可以按需求自行添加。)

效果大致如图所示:
可视化的图像
输出的坐标参数

#include <graphics.h>
#include <stdio.h>
int main(void)
{
	int nr = 0;
	int np = 0;
	TCHAR a[10];
	int wide, high;
	MOUSEMSG m;
	//输入宽,高,并打开画布
	scanf_s("%d %d", &wide, &high);
	initgraph(wide, high, EW_SHOWCONSOLE);
	while (true)
	{
	    //获取鼠标信息
		m = GetMouseMsg();
		switch (m.uMsg)
		{
		    //矩形部分
			case WM_LBUTTONDOWN:
			//获取并保存第一个顶点坐标
				int x, y;
				x = m.x;
				y = m.y;
				rectangle(m.x - 5, m.y - 5, m.x + 5, m.y + 5);
				while (m.uMsg != WM_LBUTTONUP)m = GetMouseMsg();
				while (m.uMsg != WM_LBUTTONDOWN)m = GetMouseMsg();
				int left, right, top, bottom;
				rectangle(m.x - 5, m.y - 5, m.x + 5, m.y + 5);
				//整理坐标信息
				if (x < m.x) {
					left = x;
					right = m.x;
				}
				else {
					left = m.x;
					right = x;
				}
				if (y < m.y) {
					top = y;
					bottom = m.y;
				}
				else {
					top = m.y;
					bottom = y;
				}
				nr++;
				//标记,输出矩形坐标参数
				_stprintf_s(a, _T("矩形%d"), nr);
				printf("矩形%d:(%d, %d, %d, %d)\n", nr, left, top, right, bottom);
				rectangle(left, top, right, bottom);
				outtextxy((left + right) / 2, (top + bottom) / 2, a);
				break;
			//点部分
			case WM_MBUTTONDOWN:
			    //标记点
				circle(m.x, m.y, 5);
				putpixel(m.x, m.y, WHITE);
				np++;
				_stprintf_s(a, _T("点%d"), np);
				//输出点坐标
				printf("点%d:(%d, %d)\n", np, m.x, m.y);
				outtextxy(m.x+5, m.y, a);
				break;
			default:
				break;
		}
	}
}

萌新第一次写blog,之前总是看,终于手痒了╰(°▽°)╯。有什么错误或可以改进的地方欢迎指正。

希望我的文字对你有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值