VOID BspEbootUpdateShowProgressBar(BYTE phase, BYTE percent)
{
if (!g_bScreenInited || percent > 100)
return;
BspEbootUpdateProgressString(phase, 0);//,调用DrawString()来打印对应的字符串
if (percent < oldPercent)
FillRectangle(g_dwPgrBorderLeft + 1, g_dwPgrBorderTop + 1, g_dwPgrBorderLeft + PGR_BAR_WIDTH,
g_dwPgrBorderTop + PGR_BAR_HEIGHT, g_hCurrentDC->bkcolor);
oldPercent = percent;
FillRectangle(g_dwPgrBorderLeft + 1, g_dwPgrBorderTop + 1, g_dwPgrBorderLeft + PGR_BAR_WIDTH* percent / 100,
g_dwPgrBorderTop + PGR_BAR_HEIGHT, XBLUE);//设定填充宽度
..................................................................................................................................
}
参考文章:(BSP不一样 代码不同)
WINCE6开机进度条
大致思路,在NBoot
或EBoot
加开机进度条,由于WINCE
启动主要时间都花在读取NK
,因此每读取一定的页,就在屏上画一条固定高度的线,并记录画线的位置,下次接着画,直到读取完NK
,这样就产生的进度条的效果。
参考Mini2440 Nboot。
先定义进度条颜色、位置及长宽,关键代码如下:
- #define PROGRESS_BAR_R 0x00
- #define PROGRESS_BAR_G 0xFF
- #define PROGRESS_BAR_B 0x00
- //设置启动条的位置和长宽
- #define PROGRESS_BAR_TOP 225
- #define PROGRESS_BAR_LEFT 145
- #define PROGRESS_BAR_WIDTH 512
- #define PROGRESS_BAR_HEIGHT 20
- #define PROGRESS_BAR_COLOR ( ( (PROGRESS_BAR_R >> 3) << 11) | ((PROGRESS_BAR_G >> 2) << 5) | (PROGRESS_BAR_B >> 3) )
在读取NK
前计算出读取开始画线的位置
- unsigned
char
*LCDCurrentAddr;
- LCDCurrentAddr = (unsigned char
*)LCD_ADDR + PROGRESS_BAR_TOP * LCD_WIDTH * 2 + PROGRESS_BAR_LEFT * 2;
// LCD_ADDR为屏地址
根据
NK
长度及进条度长度,计算出每读取多少页就画一条线,画线关键代码
- unsigned
short
*p = (unsigned
short
*)LCDCurrentAddr;
- for
(y = 0; y < PROGRESS_BAR_HEIGHT; y++)
- {
- *p = PROGRESS_BAR_COLOR;
- p += LCD_WIDTH;
- }
- LCDCurrentAddr += 2;
---------------------------------------------------------------------
尊重他人劳动成果,转载请标明出处http://www.cnblogs.com/feishanm