硬汉嵌入式论坛

 找回密码
 立即注册
查看: 148|回复: 2
收起左侧

[emWin] emwin自定义按键加边框无显示

[复制链接]

5

主题

10

回帖

25

积分

新手上路

积分
25
发表于 2025-4-30 20:08:14 | 显示全部楼层 |阅读模式
看了硬汉哥自定义按键教程和官方例子,想在自定义按键上加一个外框,按下弹起有颜色变化,外框一直未显示,请教下无法显示的原因
按键回调函数如下:
static void _cbButton1(WM_MESSAGE *pMsg)
{
    GUI_RECT Rect;

    switch (pMsg->MsgId) {
    case WM_PAINT:
        /* 获取客户区坐标 */
        WM_GetClientRect(&Rect);
        /* 判断按钮是否被按下 */
        if (BUTTON_IsPressed(pMsg->hWin)) {
            /* 绘制按下状态的按钮图形 */
            GUI_SetColor(GUI_GREEN);
            GUI_FillRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 5);
            GUI_SetBkColor(GUI_GREEN);
            GUI_SetColor(GUI_BLACK);
            GUI_DrawRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 5);
        } else {
            /* 绘制释放状态的按钮图形 */
            GUI_SetColor(GUI_WHITE);
            GUI_FillRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 5);
            GUI_SetBkColor(GUI_WHITE);
            GUI_SetColor(GUI_BLACK);
            GUI_DrawRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 5);
        }
        /* 绘制按钮文本 */
        GUI_SetColor(GUI_BLACK);
        GUI_SetFont(&GUI_Font20B_ASCII);
        GUI_DispStringInRect("Button1", &Rect, GUI_TA_HCENTER |
                            GUI_TA_VCENTER);
        break;
    default:
        BUTTON_Callback(pMsg);
    }
}

回复

使用道具 举报

1

主题

28

回帖

31

积分

新手上路

积分
31
发表于 2025-5-1 12:06:26 | 显示全部楼层
外框要宽一圈 ,或者你的内部小一圈
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115723
QQ
发表于 2025-5-1 13:20:33 | 显示全部楼层
试试

GUI_SetBkColor(GUI_WHITE);
GUI_Clear()
            GUI_SetColor(GUI_BLACK);
            GUI_DrawRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 5);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 12:45 , Processed in 0.197931 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表