使用easyx来实现按钮功能

实现思路

easyx是实现c/c++的图形库,没有封装好的组件,需要手动完成。
思路是画一个长方形,在长方形中水平、垂直居中显示文字,函数button的四个参数分别表示为,x为距离窗口左上角坐标原点(0,0)的横坐标距离,y为距离窗口左上角坐标原点(0,0)的纵坐标距离,w为按钮的宽度,h为按钮的高度。

设置文字的位置思路是
文字x坐标=按钮边框的起始位置x+(按钮的宽度-文字宽度)/2
文字y坐标=按钮边框的起始位置y+(按钮的高度-文字高度)/2
按钮构造好后,需要获取鼠标的位置坐标,判断鼠标是否在按钮的宽度、高度的范围内,若在此范围内,进行相应的事件函数。

#include <graphics.h>       // 引用图形库头文件
#include <conio.h>
#include<stdio.h>
#include<easyx.h>
void button(int x,int y,int w,int h,TCHAR * text)
 {
    setbkmode(TRANSPARENT);
    setfillcolor(GREEN);
    fillroundrect(x,y,x+w,y+h,10,10);
    // 输出字符串(MBCS 字符集)
    TCHAR s1[] = L"黑体";
    settextstyle(30,0,s1);
    TCHAR s[50] = L"hello";
    
    int tx = x + (w - textwidth(text)) / 2;
    int ty = y + (h - textheight(text)) / 2;

    outtextxy(tx, ty, text);
   
}
int main()
{
    initgraph(640, 480);    // 创建绘图窗口,大小为 640x480 像素
    setbkcolor(BLUE);
    cleardevice();
    TCHAR s[50] = L"1.读取点云";
    TCHAR s1[50] = L"2.分割点云";
    TCHAR s2[50] = L"3.单个树木";
    TCHAR s3[50] = L"4.树木重建";
    button(220,50,170,50,s);
    button(220, 150, 170, 50, s1);
    button(220, 250, 170, 50, s2);
    button(220, 350, 170, 50, s3);
    ExMessage msg;
    while (true) {
     if (peekmessage(&msg, EM_MOUSE)) {
    
         switch (msg.message)
         {
         case WM_LBUTTONDOWN:
             if (msg.x >= 220 && msg.x <= 220 + 170 && msg.y >= 50 && msg.y <= 50 + 50)
             {

                 outtextxy(200, 200, s);	//写了一个展示文字的效果,相当于是测试,实际使用时可以删除
                 //在此处写下按钮点击时要执行的函数,实现相应的功能
             }
             if (msg.x >= 220 && msg.x <= 220 + 170 && msg.y >= 150 && msg.y <= 150 + 50)
             {

                 outtextxy(200, 200, s1);
                 //在此处写下按钮点击时要执行的函数,实现相应的功能  
             }
             if (msg.x >= 220 && msg.x <= 220 + 170 && msg.y >= 250 && msg.y <= 250 + 50)
             {

                 outtextxy(200, 200, s2);	
                 //在此处写下按钮点击时要执行的函数,实现相应的功能
             }
             if (msg.x >= 220 && msg.x <= 220 + 170 && msg.y >= 350 && msg.y <= 350 + 50)
             {

                 outtextxy(200, 200, s3);	
                 //在此处写下按钮点击时要执行的函数,实现相应的功能
             }
             break;
         default:
             break;
         }
    }

    }
   
  
    return 0;
}

结果如图所示
在这里插入图片描述
点击后效果如图:
在这里插入图片描述

  • 25
    点赞
  • 213
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值