我们在用easyx开发小的应用程序时(比如写表白程序doge),感觉很高级,但还要注意一些细节的东西以使我们的程序变得更完美,也让客户(或者你的女朋友)感觉到你的细心以及注意细节,不得不面临一些细节的难题。
这里要说的就是如何使鼠标与界面进行交互,包括以下几个内容(主要是使背景发生变化,这里为了给你自信所以把一些前面基础的内容也给你展示出来):1、如何用easyx建立一个操作界面;2、如何建立按钮;3、如果只有一个按钮如何使鼠标移动到按钮上时背景变化;4、如果有很多按钮应该如何做出改变。
#1、如何建立一个指定大小的操作界面
#include <easyx.h>
#include <graphics.h>
initgraph(1100,800);
首先第一步肯定是应用两个头文件,然后引用initgraph函数,两个参数分别是x,y轴的坐标。建立的界面是向右为x正方向,向下是y正方向。
#2、创建按钮
IMAGE button;
loadimage(&button, L"按钮.jpg", 20, 50);
putimage(100, 20, &button, SRCINVERT);
首先要在网上找到心仪的做为按钮的图片,然后需要将照片导入到程序中,方法如下:下载照片(记得修改为好记得名字哦)->将图片转移到程序源文件所在的文件夹->进行程序操作。程序操作如下:先引用关键字IMAGE,定义一个图片保存得空间名为button;然后用loadimage函数下载图片到程序中,其中有4个参数,以下分别叫做a,b,c,d,a是一个地址,即图片保存的内存位置;b是要下载的图片的名字(c++中可能会有警告,可以在前加上L试试);c d是要保存图片的大小(xy坐标表示)。接下来要引用putimage函数将图片放置到操作界面的任何位置,也有4个参数暂且叫他们a1,b1, c1, d1,a1 b1是图片左上角的位置坐标;c1是图片的地址;d1是一种模式,有兴趣可以搜搜看。
#3、单个按钮如何与鼠标交互
MOUSEMSG m;
m = GetMouseMsg();
bool c1 = 1, now = 0;
if (m.uMsg == WM_MOUSEMOVE)
{
if (m.x > 800 && m.x < 1000 && m.y < 250 && m.y > 200 && !c1)
{
now = 1;c1 = 1;
fillrectangle(800, 200, 1000, 250);
}
if ((m.x < 800 || m.x > 1000 || m.y > 250 || m.y <200) && now)
{
c1 = 0;now = 0;
fillrectangle(800, 200, 1000, 250);
}
}
首先引用MOUSEMSG,创建一个鼠标对象m;然后将m的属性用GetMouseMsg函数赋值得到鼠标在界面的坐标;WM_MOUSEMOVE表示鼠标移动,m.uMsg是鼠标的状态,m.x是鼠标的x坐标,m.y是鼠标的y坐标;此程序表示鼠标移动到x坐标800-1000,y坐标200-250时填充该矩形的颜色。当鼠标移动出按钮时,再次填充矩形使其恢复原色。
变量now c1可以使其表现更稳定,不会出现一直乱闪的情况。
以下介绍fillrectangle函数,这个函数是使用当前线形和当前填充样式绘制有外框的填充矩形。
void fillrectangle{
int left,
int top,
int right,
int bottom
};
#4、多个按钮如何改进程序
你会发现当有多个按钮时,以上程序会出现按钮乱闪的情况,只是就需要对程序进行改进,以下。
MOUSEMSG m;
int now = 0, now2 = 0, now3 = 0, now4 = 0;
int c1 = 1, c2 = 1, c3 = 1, c4 = 1, k1 = 1, k2 = 1, k3 = 1, k4 = 1;
while (1)
{
m = GetMouseMsg();
setrop2(R2_XORPEN);
if (m.uMsg == WM_MOUSEMOVE)
{
if (m.x > 800 && m.x < 1000 && m.y < 250 && m.y > 200 && (c1 == 0 || k1 == 1))
{
now = 1; k1 = 0; c1 = 1;
fillrectangle(800, 200, 1000, 250);
}
if (now != 0 && (m.x < 800 || m.x > 1000 || m.y > 250 || m.y < 200))
{
now = 0; c1 = 0;
fillrectangle(800, 200, 1000, 250);
}
if (m.x > 800 && m.x < 950 && m.y < 367 && m.y > 317 && (c2 == 0 || k2 == 1))
{
now2 = 1; k2 = 0; c2 = 1;
fillrectangle(800, 317, 950, 367);
}
if (now2 != 0 && (m.x < 800 || m.x > 950 || m.y > 367 || m.y < 317))
{
now2 = 0; c2 = 0;
fillrectangle(800, 317, 950, 367);
}
if (m.x > 800 && m.x < 1000 && m.y < 484 && m.y > 434 && (c3 == 0 || k3 == 1))
{
now3 = 1; k3 = 0; c3 = 1;
fillrectangle(800, 434, 1000, 484);
}
if (now3 != 0 && (m.x < 800 || m.x > 1000 || m.y > 484 || m.y < 434))
{
now3 = 0; c3 = 0;
fillrectangle(800, 434, 1000, 484);
}
if (m.x > 800 && m.x < 900 && m.y < 601 && m.y > 551 && (c4 == 0 || k4 == 1))
{
now4 = 1; k4 = 0; c4 = 1;
fillrectangle(800, 551, 900, 601);
}
if (now4 != 0 && (m.x < 800 || m.x > 900 || m.y > 601 || m.y < 551))
{
now4 = 0; c4 = 0;
fillrectangle(800, 551, 900, 601);
}
}
这里是有4个按钮,添加k系列变量使其表现更稳定。文章来源:https://www.toymoban.com/news/detail-484269.html
*结语:
这就是要分享的小tips了,希望成功哦(doge)。可能这种方法比较麻烦,但简单易懂,希望大佬放过。哈哈哈哈文章来源地址https://www.toymoban.com/news/detail-484269.html
到了这里,关于精心打造:使用easyx做界面时,想要鼠标到一个按键时背景颜色发生改变的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!