emWin 2天速成实例教程016_不规则异形进度条控件实现方法

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

 

前言:

1)在emWin中,有两种方法实现不规则进度条:(1)BMP位图方式 (2)2D绘图方式

2)如果采用第(1)种方式,必须先熟悉:”emWin 2天速成实例教程014_BMP位图图片显示以及位图皮肤的使用方法”!

3)掌握emWin的Skinning皮肤和剪切显示的概念非常、非常重要!具体请看”教程014”最后面。

 

(1)BMP位图方式实现不规则进度条

准备以下两幅图片bitmap_n.bmp、bitmap_m.bmp,并用BmpCvt.exe转成C文件:

      

白色区域是进度条控件区域,即在这个位置放一个进度条控件,并把这两幅图片设置为该进度条控件的图片皮肤即可。

第一幅图片bitmap_n用于正常显示(比如进度条值为0时),第二幅图片bitmap_m用于进度条填充,两幅图片复合显示的原理是:进度条的下部分剪切显示出bitmap_m,进度条的上部分剪切显示出bitmap_n,而这些都是emWin内部自己处理的(请不要想着还要自己去实现),你只需要做以下工作:

(1)将不同状态的页面图片赋值给"页面图片结构体":

(2)给控件设置位图皮肤: PROGBAR_SetSkin(WM_GetDialogItem(pMsg->hWin,ID_PROGBAR_0), SKIN_progbar3C);

具体请看” 教程014”;当然,进度条的形状不限于三角形或圆形,可以是任何形状、任何效果的图形。

 

未使用位图皮肤(原始进度条控件):         使用位图皮肤:

     


(2)2D绘图方式实现不规则进度条

通过修改Skinning皮肤的”自定义绘制函数”,用绘制不规则图形实现各种形状的进度条:


蓝色方框是绘制进度条的上部分(空白部分),绿色方框是绘制进度条的下部分(填充部分);如果你仔细阅读程序之后,会发现红色方框函数绘制的是完整的填充圆,为什么实际效果却是显示进度值的部分而已?这就是emWin剪切显示的神奇之处!具体请看”教程014”最后面。


未使用Skinning皮肤(原始进度条控件):     使用Skinning皮肤:

     



源码/软件下载