硬汉嵌入式论坛

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

[emWin] 请教下使用什么方法可以搞出变色的按钮来 ???

[复制链接]

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
发表于 2018-10-24 17:00:33 | 显示全部楼层 |阅读模式
请教下使用什么方法可以搞出变色的按钮来 ???

button.png


比如我有5个按钮,其中一个按钮 需要这样的效果,像这样类型的按钮 效果,使用什么方法可以搞出来 ?




回复

使用道具 举报

20

主题

110

回帖

170

积分

初级会员

积分
170
发表于 2018-10-24 22:04:57 | 显示全部楼层
使用换肤API,用户手册里的皮肤设置章节里有说明。如果只是其中一个需要的话,没试过。。。。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107143
QQ
发表于 2018-10-25 02:48:07 | 显示全部楼层
可以看我们新版教程的皮肤色章节:
http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834
QQ截图20181025024830.png
回复

使用道具 举报

335

主题

2040

回帖

3050

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3050
发表于 2018-10-25 09:54:52 | 显示全部楼层
自己定义一个标志位,1和0分别设定button的颜色。 好像是button_setcolor之类的。
回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2018-10-25 16:42:08 | 显示全部楼层
caicaptain2 发表于 2018-10-25 09:54
自己定义一个标志位,1和0分别设定button的颜色。 好像是button_setcolor之类的。

这种方法的话,不好做梯度色,有层次感,不过贴图最省事。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
 楼主| 发表于 2018-10-26 09:23:49 | 显示全部楼层
byccc 发表于 2018-10-25 16:42
这种方法的话,不好做梯度色,有层次感,不过贴图最省事。

我上图显示的那个效果,使用全局设置貌似是可以实现,不过这样设置后,所以的按钮都变得一样了,

感觉不够科学,如果使用 回调函数的方式,实现我上图的那个效果貌似也没有找到类似的函数,

貌似5楼的这个方法,直接使用图片的方法,最后按钮使用重新绘制的方法应该是可以实现了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107143
QQ
发表于 2018-10-26 11:31:01 | 显示全部楼层
hpdell 发表于 2018-10-26 09:23
我上图显示的那个效果,使用全局设置貌似是可以实现,不过这样设置后,所以的按钮都变得一样了,

感觉 ...

可以使用这个函数
QQ截图20181026113047.png
回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
 楼主| 发表于 2018-10-26 21:40:27 | 显示全部楼层
本帖最后由 hpdell 于 2018-10-26 21:41 编辑
eric2013 发表于 2018-10-26 11:31
可以使用这个函数



你好,使用这个函数貌似也不能给实现我上图的效果啊,函数如下:

static int _DrawSkin_BUTTON(const WIDGET_ITEM_DRAW_INFO * pDrawItemInfo) {
        switch (pDrawItemInfo->Cmd) {
        case WIDGET_ITEM_DRAW_BACKGROUND: //处理了绘制背景命令 WIDGET_ITEM_DRAW_BACKGROUND

        // 扁平化风格按钮
        GUI_SetColor(0xA8A851);
        if (BUTTON_IsPressed(pDrawItemInfo->hWin))
        { //通过函数 BUTTON_IsPressed 来判断按钮是否按下,如果按下的话,通过函数
                GUI_AA_FillRoundedRect(pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1, 6);
        }
        else
        {
                        GUI_DrawGradientH    (pDrawItemInfo->x0, pDrawItemInfo->y0, pDrawItemInfo->x1, pDrawItemInfo->y1,
                                                                                                                GUI_BLUE,
                                                                                                        GUI_WHITE
                                                                                                        );
        }
        break;

        default:

        return BUTTON_DrawSkinFlex(pDrawItemInfo); //--------------(4)
        }
        return 0;
}



int main(void)
{
   ... ...

BUTTON_SetSkin(WM_GetDialogItem(hWin,GUI_ID_BUTTON_BEQU), _DrawSkin_BUTTON);

......

}

实现的效果如下:
QQ图片20181026213918.png


想要实现我 的 165852neev65x35ulufxfz.png 这个效果,该如何搞啊 ? 单个按钮修改的情况


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107143
QQ
发表于 2018-10-27 01:22:17 | 显示全部楼层
hpdell 发表于 2018-10-26 21:40
你好,使用这个函数貌似也不能给实现我上图的效果啊,函数如下:

static int _DrawSkin_BUTTON(co ...

还是贴图吧,省事些。
回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
 楼主| 发表于 2018-10-27 08:18:14 | 显示全部楼层
eric2013 发表于 2018-10-27 01:22
还是贴图吧,省事些。

看来貌似只有贴图比较方面了啊
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 10:45 , Processed in 0.281734 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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