|

楼主 |
发表于 2022-10-12 11:03:58
|
显示全部楼层
今天早上做了一下实验,位图不放在回调里面刷屏没出现黑线程序如下:
while(1)
{
HMemBj = LoadFile("resource/index/index.dta"); //装载新窗口的背景
CreateBitMapFromFile(HMemBj, &BitmapBj, &PaletteBj);
GUI_DrawBitmap(&BitmapBj, 0, 0);
GUI_Delay(10000);
DestroyBitMap(HMemBj);
GUI_Clear();
HMemBj = LoadFile("resource/singlesync/singlesync.dta"); //装载新窗口的背景
CreateBitMapFromFile(HMemBj, &BitmapBj, &PaletteBj);
GUI_DrawBitmap(&BitmapBj, 0, 0);
GUI_Delay(10000);
DestroyBitMap(HMemBj);
GUI_Clear();
}
把位图放在回调里面刷屏,就出现了图中的黑线,程序如下:
while(1)
{
if(flag == 0)
{
flag = 1;
HMemBj = LoadFile("resource/index/index.dta"); //装载新窗口的背景
CreateBitMapFromFile(HMemBj, &BitmapBj, &PaletteBj);
}
else
{
flag = 0;
HMemBj = LoadFile("resource/singlesync/singlesync.dta"); //装载新窗口的背景
CreateBitMapFromFile(HMemBj, &BitmapBj, &PaletteBj);
}
WM_InvalidateWindow(WM_HBKWIN);
GUI_Delay(10000);
DestroyBitMap(HMemBj);
}
//回调如下:
static void _cbBk(WM_MESSAGE *pMsg)
{
switch (pMsg->MsgId)
{
case WM_PAINT:
GUI_Clear();
GUI_DrawBitmap(&BitmapBj, 0, 0);
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
请问这两种方式有什么区别吗?是我刷得方式不对还是什么配置的问题。
我配置开启存储设备,屏幕大小1024*600. 内存使用外部SDRAM,大小12M。
请大神帮我再分析一下。 |
|