emWin 2天速成实例教程013_修改BUTTON按钮等控件背景皮肤颜色_SetBkColor

时间:2023-02-04 20:26:50

备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果。(2)看完教程000~005就基本会用emWin做项目,其他章节可以需要时再参考。


 emWin的控件显示效果有两种风格,旧版本风格(按钮是直角的)和新版本Skinning风格(emWin5.28默认风格,按钮是圆角的)。对于emWin5.28及其以上版本,XXXX_SetBkColor()函数是不起作用的,因为此函数是针对于旧版本修改控件背景色。

 emWin可以通过两种方式修改控件背景色:(1)将控件设置为旧版本风格,通过XXXX_SetBkColor()函数修改控件背景色。(2)停留在新版本Skinning风格,通过修改皮肤色的方法修改控件背景色。在例程中通过P1_DefaultSkinENA宏定义切换两种方式:
emWin 2天速成实例教程013_修改BUTTON按钮等控件背景皮肤颜色_SetBkColor

第(1)种方式比较简单没什么好说的,这里主要讲解下第(2)种方式:

BUTTON_SKINFLEX_PROPSProps;

BUTTON_GetSkinFlexProps(&Props,BUTTON_SKINFLEX_PI_ENABLED);

Props.Radius = 2;                 //圆角半径

Props.aColorUpper[0]= GUI_WHITE;  //上半部颜色

Props.aColorLower[0]= GUI_RED;    //上半部颜色

Props.aColorUpper[1]= GUI_RED;    //下半部颜色

Props.aColorLower[1]= GUI_WHITE;  //下半部颜色

BUTTON_SetSkinFlexProps(&Props,BUTTON_SKINFLEX_PI_ENABLED);

emWin专门用一个XXXX_SKINFLEX_PROPS结构体储存控件皮肤的信息,对于按钮控件包括圆角半径、边框颜色(aColorFrame[],有3个边框)、上半部颜色(含渐变的Upper和Lower值)、下半部颜色(含渐变的Upper和Lower值)。

修改颜色的步骤:用XXXX_GetSkinFlexProps()函数获取当前的皮肤信息->修改皮肤信息->用XXXX__SetSkinFlexProps()函数设置皮肤信息。

 

总结:

(1)如果某一类控件设置为旧版本风格,该类型的所有控件都将会是旧版本风格(比如所有按钮都是直角的),但XXXX_SetBkColor()函数可以设置每一个控件使用不同的背景色(比如可以是不同颜色的3个按钮,但都是直角的)。

(2)如果某一类控件设置为新版本风格(默认),那么该类型的所有控件都将会是相同风格,相同颜色(比如所有按钮都是圆角的,并且都是相同一种颜色)。

(3)如果按钮控件设置为新版本风格(默认),而且需要不同颜色的按钮,那么只能用位图皮肤的方式,即用图片做按钮的皮肤。

emWin 2天速成实例教程013_修改BUTTON按钮等控件背景皮肤颜色_SetBkColor        emWin 2天速成实例教程013_修改BUTTON按钮等控件背景皮肤颜色_SetBkColor


源码/软件下载