精心打造:使用easyx做界面时,想要鼠标到一个按键时背景颜色发生改变

这篇具有很好参考价值的文章主要介绍了精心打造:使用easyx做界面时,想要鼠标到一个按键时背景颜色发生改变。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们在用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系列变量使其表现更稳定。

*结语:

这就是要分享的小tips了,希望成功哦(doge)。可能这种方法比较麻烦,但简单易懂,希望大佬放过。哈哈哈哈文章来源地址https://www.toymoban.com/news/detail-484269.html

到了这里,关于精心打造:使用easyx做界面时,想要鼠标到一个按键时背景颜色发生改变的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Easyx趣味编程7,鼠标消息读取及音频播放

    hello大家好,这里是dark flame master,今天给大家带来Easyx图形库最后一节功能实现的介绍,前边介绍了绘制各种图形及键盘交互,文字,图片等操作,今天就可以使写出的程序更加生动且容易操控。一起学习吧! 由于会用到前边的内容 专栏:Easyx趣味编程 正题: EasyX提供了记

    2024年02月08日
    浏览(34)
  • EasyX 创建输入框,支持多行,中文输入,鼠标操作。

    自绘输入框的方法就不说了,这里介绍一下 hieasyx,一个基于 EasyX 的扩展库,这个库的 github 链接是: https://github.com/zouhuidong/HiEasyX HiEasyX 支持创建多绘图窗口,拥有相对完善的控件库,支持透明通道,封装了画布、图层和场景。 这个库把 Win32 控件封装了起来,可以很方便地

    2024年02月11日
    浏览(30)
  • EasyX---快速入门---(二)图形处理/鼠标、键盘消息/其他

    导图版本   图形处理函数(用于在窗口显示图片) 使用图像之前,需要定义一个变量(对象),然后把图片加载进变量才能使用 使用EasyX提供的类型:IMAGE img; loadimage(IMAGE*pDstlmg,LPCTSTR plmgFile,int nWidth=0,int nHeight=0,bool bResize=false);从文件中读取图像 pDstlmg 保存图像的IMAGE对象指针

    2024年02月10日
    浏览(30)
  • 图形化界面扫雷(C语言+easyx实现,多图教学)

    学了那么长时间的C语言,我们所有的一切似乎都被禁锢在黑框框(控制台)里,让人觉得很无趣,学习unity那样的平台又太过困难,那么有没有什么是适合我们这些新手使用的?答案是:有! EasyX 是针对 C/C++ 的图形库,可以帮助使用C/C++语言的程序员快速上手图形和游戏编程

    2024年02月06日
    浏览(36)
  • 用Devc++与easyx一步一步做游戏[启动界面部分]-之按钮制作

    前面我们介绍了如何为dev c++配置好easyx,至于用easyx能够做一些什么呢?大用处我不敢说,用来学习了解消息机制还是不错的。这我们来实现一个简单的游戏启动界面的设计,主要是按钮的设计。总体设计好的效果如下: GIF截图看不到鼠标移动的效果,实际上这里是随着鼠标

    2024年01月15日
    浏览(32)
  • 安装黑苹果进入语言选择界面,鼠标/键盘无法使用?

    是因为 EFI 文件中没有 USB 驱动,或你使用的 EFI 文件定制了 USB 端口,但和你的主板不匹配。可以放一个 USBInjectAll.kext 到 EFI/Clover/Kexts/other ( Clover 方式),或 EFI/OC/Kexts ( OpenCore 方式),并删除同目录下的 USBPorts.kext ,或删除 ACPI/Patched 下的 ssdt-uiac.aml ( OpenCore 在 ACPI 目录,也可能

    2024年02月12日
    浏览(30)
  • WinNTSetup系统安装、安装WIN7在配置界面,USB键盘鼠标无法使用

    部分主板厂商的集成CPU在win7界面处是没有整合进USB3.0驱动的,所有需要在安装系统时手动加载进入驱动,我这里以WinNTSetup安装系统为参考 打开WinNTSetup x64主程序,选择镜像ISO文件加载 加载成功会显示安装wim文件,工具自动检索 选择安装的引导盘位置盘符、系统安装的位置盘

    2024年02月10日
    浏览(43)
  • 【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

    鼠标指针指向界面中的 Canvas 画布某个位置 , Canvas 画布中绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放 ; 使用鼠标滚轮缩放后 , 在 Canvas 中绘制的图片的尺寸肯定是放大或者缩小了 , 尺寸发生了改变 ; 图片缩放时 , 鼠标指针指向一个位置 , 该位置对应着一

    2024年02月15日
    浏览(26)
  • Qt魔法书:打造自定义鼠标键盘脚本

    在我们的日常生活和工作中,脚本扮演着重要的角色。它们就像是一种“自动化的魔法”,可以帮助我们完成各种复杂、繁琐的任务,从而提高效率,节省时间。这就像是我们拥有了一个个小助手,他们可以按照我们的指示,自动完成我们需要的工作。 脚本的重要性不仅体现

    2024年02月09日
    浏览(36)
  • PyQt Qwidget详解:打造自定义窗口界面

    PyQt Qwidget详解:打造自定义窗口界面 PyQt是Python语言下的GUI编程框架,其QWidget类是PyQt的基础组件,主要用于创建多种窗口界面,支持各种控件的添加和布局,可定制化程度高。本文将详细介绍Qwidget类的使用方法,带你打造自定义窗口界面。 创建Qwidget对象 首先,我们需要通

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包