有关函数GUI_MEMDEV_DrawAuto()的问题

andylao62 2010-09-21 10:35:10
该设备能自动识别显示屏的哪一部分包含固定的对象,哪一部分包含移动或改变的对象(必须更新)。当绘图函数第一次被调用时,所有的对象都被绘制出。而以后的函数调用只更新需要移动或改变的物体。
/* Do the actual drawing */
pAutoDevInfo->DrawFixed = 1;//由于这里为1,导致又会调用pfDraw函数里的
if (GUI_MEMDEV_Draw(&pAutoDev->rView, pfDraw, pData, 0, GUI_MEMDEV_NOTRANS)) {
return 1;
}
pAutoDevInfo->DrawFixed = 0;
pAutoDev->FirstCall = 0;
return 0;


绘图函数

void _Draw(void * p) {
PARAM * pParam = (PARAM *)p;
/* Fixed background */
if (pParam->AutoDevInfo.DrawFixed) {
GUI_ClearRect ((800 - (int)_bmScaleR140.XSize) / 2,
(480 / 2 - 50) + _bmScaleR140.YSize,
(800 - (int)_bmScaleR140.XSize) / 2 + _bmScaleR140.XSize,
(480 / 2 + 50));

GUI_DrawBitmap(&_bmScaleR140,
(800 - (int)_bmScaleR140.XSize) / 2,
(480 / 2 - 50));
printk("\n draw \n");//通过打印信息,发现每次都会打印这个信息
}
/* Moving needle */
GUI_SetColor(GUI_WHITE);
GUI_AA_FillPolygon(pParam->aPoints,
countof(_aNeedle_1),
MAG * (800 / 2),
MAG * (480 / 2 + 90));
/* Fixed foreground */
if (pParam->AutoDevInfo.DrawFixed) {
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetColor(GUI_RED);
GUI_SetFont(&GUI_Font24B_ASCII);
GUI_DispStringHCenterAt("MPH / 10", 800 / 2, (480 / 2 + 10));
}
}
根据那个打印信息,可以看到他每次都调用
GUI_DrawBitmap(&_bmScaleR140,
(800 - (int)_bmScaleR140.XSize) / 2,
(480 / 2 - 50));
这个函数,那岂不是会很大程度上影响效率问题呢?
...全文
572 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
andylao62 2010-09-23
  • 打赏
  • 举报
回复
levesoon 2010-09-23
  • 打赏
  • 举报
回复
学习中。。。

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧