|
求助论坛大佬,现在使用的是新塘的n9h20,利用emwin进行刷图操作,图片从右往左移动(类似动画的现过),并且在图片上显示相关的信息(同样是显示图片的),现在出现的情况是,显示的相关信息会出现闪烁(不是一直闪烁),但是动画效果图没问题(开启定时器,在回调函数中定时刷新),很奇怪一直没找到原因,刷图时使用了双缓冲(驱动是原厂给的应该没什么问题)。下面是程序的框架,请大佬帮忙看下那边是否有问题,感激不尽!
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 272, 480, 0, 0, 0 },
{ IMAGE_CreateIndirect, "Image", ID_IMAGE_0, 0, 0, 272, 480, 0, IMAGE_CF_MEMDEV, 0 },
};
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
static unsigned char count_open= 0;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG://?????,????/?????,????????????????
hItem = WM_GetDialogItem(pMsg->hWin, ID_IMAGE_0);
break;
case WM_TIMER://?????,??????
WM_RestartTimer(hTimer6, 125);
GUI_MULTIBUF_Begin();
Load_Sonar_picture();//加载图片信息
Load_Sonar_Strength();//
Update_Fish_Image();//
WM_SelectWindow(WM_GetDialogItem(pMsg->hWin, ID_IMAGE_0));
GUI_DrawBitmapMag(&SonarImage, 0, 0,1,2);//绘制动画图片
GUI_DrawBitmapMag(&Signal, 248, 0,1,2);//
GUI_DrawBitmap(&bmruler, 237, 0);//
GUI_DrawBitmap(&tiny0,238,5);//
Show_LowRange_Num();
Display_Fish_Image();//
Show_Related_Inform();//显示相关信息
GUI_MULTIBUF_End();
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
WM_HWIN CreateWindowMOV(void) {
WM_HWIN hWin,hStatusWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
hTimer6 = WM_CreateTimer(hWin, ID_TIMER_TIME6, 125, 0);//开其定时器用于刷新图片
return hWin;
}
void MainTask(void){
GUI_Init();
WM_SetCreateFlags(WM_CF_MEMDEV);//use memory devices on all windows
WM_MULTIBUF_Enable(1);
WM_EnableMemdev(WM_HBKWIN);
CreateWindowMOV();
GUI_Primary_MEUN();
GUI_Scondary_MEUN();//二级菜单
while(1){
GUI_Delay(25);
}
}
下面是效果图,红色框内的图片偶尔会闪烁
|
|