|
各位好:
目前使用 GUI_FillRect() 函數 顯示 160*120 個不同顏色的正方形
螢幕刷新的速度當然希望越快越好!
目前嘗試兩種方式,都利用 WM_SetCallback(WM_HBKWIN, &_cbBkWindow); 方式,以下說明使用方式
第一種方式: 此方式是我目前使用的
case WM_PAINT:
for(y=0;y<160;y++)
for(x=0;x<120;x++)
{
GUI_SetColor(TermoClr(rand(),0,255));
GUI_FillRect(x*3,y*3,x*3+3,y*3+3);
}
break;
case WM_TIMER:
WM_InvalidateArea(&ThermalImage); // 利用 "無效 160*120 個正方形區域" 來重繪此區域
WM_RestartTimer(pMsg->Data.v, 100);
break;
第二種方式: 此方式會有些許的海波浪,因為螢幕是從上而下刷新的,且沒有進儲存設備內整理完再顯示,所以海波浪很正常
case WM_TIMER:
for(y=0;y<160;y++)
for(x=0;x<120;x++)
{
GUI_SetColor(TermoClr(rand(),0,255));
GUI_FillRect(x*3,y*3,x*3+3,y*3+3);
}
WM_RestartTimer(pMsg->Data.v, 100);
break;
以上兩種方式都使用 WM_RestartTimer(pMsg->Data.v, 100); /100ms來刷新,但很明顯速度沒有到100ms ....
想應該是我使用的方式效率太低,所以請問各位是否能告知更有效率、更好的顯示方式,尤其在利用 GUI_FillRect 函數 大量顯示圖形時
謝謝
|
|