备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果。(2)看完教程000~005就基本会用emWin做项目,其他章节可以需要时再参考。
emWin的控件显示效果有两种风格,旧版本风格(按钮是直角的)和新版本Skinning风格(emWin5.28默认风格,按钮是圆角的)。对于emWin5.28及其以上版本,XXXX_SetBkColor()函数是不起作用的,因为此函数是针对于旧版本修改控件背景色。
emWin可以通过两种方式修改控件背景色:(1)将控件设置为旧版本风格,通过XXXX_SetBkColor()函数修改控件背景色。(2)停留在新版本Skinning风格,通过修改皮肤色的方法修改控件背景色。在例程中通过P1_DefaultSkinENA宏定义切换两种方式:
第(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)如果按钮控件设置为新版本风格(默认),而且需要不同颜色的按钮,那么只能用位图皮肤的方式,即用图片做按钮的皮肤。