写在前面
承接着我的上一个博客,讲一下如何在管理系统中加上鼠标有关的操作
主要内容
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语言其实对于这些图形操作不是太友好的,博主也是想整点骚活才学的,有兴趣的话可以学习专门对这些的语言。