和Windows XP一樣,Windows CE任然可以繪製美妙的進度條,其實這個操作過程主要是對螢幕緩衝進行操作。在S3C2440 CPU BSP代碼中已經給出了這段緩衝的地址即IMAGE_FRAMEBUFFER_UA_BASE_eboot,這段緩衝支援的視頻編碼格式是RGB16,預設顏色為白色,在這個過程當中,並不像EVC一樣提供了很多GDI繪圖的函數,如繪製線條、矩形等,所有的操作都是從點開始的,由點繪製成線,由線繪製成矩形。可以發現,整個緩衝可以定義為一個二唯資料,每一個元素就是一個點,每一行就是一條線。點的訪問過程如下;
- *(embedsky_LCD_Buffer+y*LCD_XSIZE_TFT+x)=0xF800;
有了點,我們就能繪製成線,如下函數;
UINT32 currWidth = 0;
void drawProcessBar(UINT32 total, UINT32 current )
{
UINT32 const bar_height = 8;
UINT32 bar_base = LCD_YSIZE_TFT - bar_height;
int i = (int) LCD_XSIZE_TFT / 8;
UINT32 j;
int pbcolor = 0xF800; //red
int bar_width;
//printk("tooal = %d, current = %d/n",total, current);
if(total != -1)
{
j = 0;
bar_width = (int) LCD_XSIZE_TFT * ((current * 1.0) / total);
if(bar_width > currWidth)
{
for ( ; j < bar_height; j++)
{
putPixel(bar_width, j + bar_base, pbcolor);
}
currWidth = bar_width;
}
}
在整個Windows CE啟動過程當中,需要繪製捲軸,一般可以將上述代碼放在BootloaderMain函數當中,已經驗證過效果良好。