管理系统的鼠标操作

写在前面

承接着我的上一个博客,讲一下如何在管理系统中加上鼠标有关的操作

主要内容

1.如何在图形界面输出文字
2.如何设置按钮
3.如何做一个鼠标感应按钮
4.其他

开始起飞

首先在实现以下功能的时候都要先定义一个图形处理框

initgraph(800, 600)//记得包含<graphics.h>

其他
为何要先讲其他,应为这里面讲的东西比较杂,比如加图片加音乐啥的。
1.给程序里加一个图片
首先定义一个图片变量IMAGE Picture;这里Picture此时就是一个图片变量,下来给照片赋值并输出

loadimage(&Picture, _T("Debug\\picture.jpg"), 1002, 600);
putimage(0, 0, &Picture);

记得把照片放在工程文件夹里面的Debug文件夹里面这样的话屏幕就能输出一个图片
在这里插入图片描述
输出文字
输出文字的方法有两种在上一篇博客中已说明,这里由于后面的要制作按钮那便使用第一种输出方式——使用drawtext输出
首先我们定义一个矩形变量

RECT R;
setlinecolor(WHITE);
settextcolor(WHITE);

这里将线的颜色设置为白色因为屏幕为黑色
然后初始化矩形框

R = { 50,50,100,100 };

全部代码

    initgraph(800, 600);
	IMAGE Picture;
	loadimage(&Picture, _T("Debug\\picture.jpg"), 1002, 600);
	putimage(0, 0, &Picture);
	RECT R;
	R = { 50,50,100,100 };
	setlinecolor(WHITE);
	settextcolor(WHITE);
	drawtext("按钮", &R, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
	rectangle(50, 50, 100, 100);
	while (1);

制作按钮
制作按钮就是当鼠标点击所在位置时可以有反应
比如当我们点击这个按钮时,清空这个屏幕。
首先定义一个鼠标变量。

MOUSEMSG m;

进入死循环,不断获取鼠标信息。

while (1)
	{
		m = GetMouseMsg();
	}

当检测到为鼠标按下并且在按钮区域时清屏

if (m.uMsg == WM_LBUTTONDOWN) {
			if (m.x > 50 && m.x < 100 && m.y>50 && m.y < 100) {
				cleardevice();
			}	
		}

全部代码

MOUSEMSG m;
	while (1)
	{
		m = GetMouseMsg();
		if (m.uMsg == WM_LBUTTONDOWN) {
			cleardevice();
		}
	}

按钮的样子制作成功,那接下来就是如何让这个按钮看起来更真实,比如感应。
如何做一个鼠标感应按钮
接着上面,按钮已经做好了,如何让他感应起来,上篇文章说过有关鼠标结构体里面的值,其中有一个x值与y值,所以我们先捕捉鼠标动作,当这个动作为鼠标移动时,我们判断它的坐标是不是位于我们所在的按钮上,当在这个按钮上时,我们对其做出感应,当移动开后我们也做出相应的感应
咱们暂且先这样写

       if (m.uMsg == WM_MOUSEMOVE) {
			if (m.x > 50 && m.x < 100 && m.y>50 && m.y < 100&&now==0) {
				now = 1;
				fillrectangle(50, 50, 100, 100);
			}
			if (now != 1&&(m.x < 50 || m.x > 100 || m.y<50 || m.y > 100)) {
				now = 0;
				fillrectangle(50, 50, 100, 100);
			}
		}

但是我们发现如果我们这样写,但你把鼠标放到那个按钮上后,整个按钮就变白了,连里面的字都不见了,你移动离开之后也没有反应,这是因为填充的颜色一直是白色,字也是白色,当你移动开之后其实已经填充了只不过你看不,这里我们就需要设置一个二级光栅,上一篇文章也有讲,对屏幕进行一个异或

while (1)
	{
		m = GetMouseMsg();
		setrop2(R2_XORPEN);
		if (m.uMsg == WM_MOUSEMOVE) {
			if (m.x > 50 && m.x < 100 && m.y>50 && m.y < 100&&now==0) {
				now = 1;
				fillrectangle(50, 50, 100, 100);
			}
			if (now != 0&& (m.x < 50 || m.x > 100 || m.y<50 || m.y > 100)) {
				now = 0;
				fillrectangle(50, 50, 100, 100);
			}
		}
		else if (m.uMsg == WM_LBUTTONDOWN) {
			if (m.x > 50 && m.x < 100 && m.y>50 && m.y < 100) {
				cleardevice();
			}			
		}
	}

这样的话一个按钮就成了。

写在最后

C语言其实对于这些图形操作不是太友好的,博主也是想整点骚活才学的,有兴趣的话可以学习专门对这些的语言。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值