eric2013 发表于 2016-7-29 10:34:28

为什么设置控件的颜色,却没有变化,比如按钮颜色设置,太多人问了,发帖说明下but

为什么设置控件的颜色,却没有变化,比如按键颜色,太多人问了,发帖说明下
========================================================
因为从emWin5.28版本开始,默认已经使能了皮肤色,或者说,用户在使用低版本的emWin时,调用了如下的
函对控件使能了皮肤色:

PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
MULTIPAGE_SetDefaultSkin(MULTIPAGE_SKIN_FLEX);
========================================================
这种情况下,用户再调用控件的颜色设置函数是没有用,比如按钮的 BUTTON_SetBkColor
那些颜色设置函数是针对早期的控件颜色模式,即用户要禁止皮肤色,这些颜色设置函数才可以用。
1.对于emWin5.28及其以上函数就是调用函数BUTTON_SetDefaultSkinClassic(),其余控件类似,都是这种类型的函数,
然后就可以调用函数BUTTON_SetBkColor对按钮颜色进行设置了。


2.低版本的emWin不调用如下的皮肤色设置函数即可:
PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
MULTIPAGE_SetDefaultSkin(MULTIPAGE_SKIN_FLEX);

witlong 发表于 2016-7-29 23:21:47

感谢版主!

无帝老三 发表于 2017-3-2 09:31:51

默认换肤,BUTTON按钮显示一条条颜色,按下后变成七彩虹色了,不知是移植错误了还是什么问题?功能啥的都正常,就是显示颜色很怪异

eric2013 发表于 2017-3-2 10:14:32

回 无帝老三 的帖子

无帝老三:默认换肤,BUTTON按钮显示一条条颜色,按下后变成七彩虹色了,不知是移植错误了还是什么问题?功能啥的都正常,就是显示颜色很怪异 (2017-03-02 09:31) images/back.gif

估计是底层函数有问题,可以单次测试下那些函数,显示些简单的彩带效果看看,各个颜色是否正常。

廷润 发表于 2018-7-12 16:47:23

顶贴支持。

szchen2006 发表于 2019-10-31 10:56:56

学习了。感谢!!!

清风徐来 发表于 2021-3-17 12:45:04

请问 BUTTON_SetDefaultSkinClassic() 这类函数,程序里应该放在哪里调用?我实验发现必须放在创建对话框函数之前? 如果放在消息里面调用,无效?

eric2013 发表于 2021-3-17 15:31:55

清风徐来 发表于 2021-3-17 12:45
请问 BUTTON_SetDefaultSkinClassic() 这类函数,程序里应该放在哪里调用?我实验发现必须放在创建对话框 ...

要在GUI_Init函数后就调用。

YFS 发表于 2023-12-16 16:00:51

为什么我的emwin5.26 版本只有在 GUI_init() 函数之后调用 BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX); 此函数后,才能进行按钮皮肤的设置,要不然按钮的皮肤设置不会生效

eric2013 发表于 2023-12-17 09:51:41

YFS 发表于 2023-12-16 16:00
为什么我的emwin5.26 版本只有在 GUI_init() 函数之后调用 BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX); 此函 ...
是这样的,设置为早期的皮肤色才可以设置。后面的不能通过颜色API修改了。

YFS 发表于 2023-12-21 15:17:57

eric2013 发表于 2023-12-17 09:51
是这样的,设置为早期的皮肤色才可以设置。后面的不能通过颜色API修改了。

谢谢硬汉哥
页: [1]
查看完整版本: 为什么设置控件的颜色,却没有变化,比如按钮颜色设置,太多人问了,发帖说明下but