IDISPLAY_Update如何局部刷新?

vigoqiu 2009-03-06 04:28:00
我想用LOAD进一张满屏的大图片,但只对屏幕的其中一部分刷新,也就是说只显示出图片的其中一部分,但用下面方法不行,不知要怎样改?


IImage *m_IImage = ISHELL_LoadImage(pMe->m_pIShell, "logo.png");//LOAD入图片
IIMAGE_Draw(m_IImage , 0, 0);
AEERect rect;
SETAEERECT(&rect,100,100,20,20); //我想只显示满屏图片的这个区域
IDisplay_SetClipRect(pMe->m_pIDisplay,&rect);
IDISPLAY_ClearScreen(pMe->m_pIDisplay);//
IDISPLAY_Update(pMe->m_pIDisplay);

但发觉图片还是全部显示,指定的区域是白色的,什么原因啊?
...全文
1539 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
杭州山不高 2009-05-19
  • 打赏
  • 举报
回复
可以结贴了吧!twoconk回答的没错!!


换成这个样子应该就可以
IImage *m_IImage = ISHELL_LoadImage(pMe->m_pIShell, "logo.png");//LOAD入图片

AEERect rect;
SETAEERECT(&rect,100,100,20,20); //我想只显示满屏图片的这个区域
IDisplay_SetClipRect(pMe->m_pIDisplay,&rect);
IDISPLAY_ClearScreen(pMe->m_pIDisplay);//

IIMAGE_Draw(m_IImage , 0, 0); //在ClearScreen之后再画图就没问题了
IDISPLAY_Update(pMe->m_pIDisplay);
visual4825 2009-03-21
  • 打赏
  • 举报
回复
一点说明

〉IDISPLAY_Update(pMe->m_pIDisplay);

这个api只能进行全画面更新,
无法进行部分画面更新。

表示middle层会维护一个描画buffer,
调用描画接口进行描画时,描画数据会被放到这个buffer里面,
当调用IDISPLAY_Update时,会把这个buffer里的描画数据
dump到LCD上。
twoconk 2009-03-14
  • 打赏
  • 举报
回复
换成这个样子应该就可以
IImage *m_IImage = ISHELL_LoadImage(pMe->m_pIShell, "logo.png");//LOAD入图片

AEERect rect;
SETAEERECT(&rect,100,100,20,20); //我想只显示满屏图片的这个区域
IDisplay_SetClipRect(pMe->m_pIDisplay,&rect);
IDISPLAY_ClearScreen(pMe->m_pIDisplay);//

IIMAGE_Draw(m_IImage , 0, 0); //在ClearScreen之后再画图就没问题了
IDISPLAY_Update(pMe->m_pIDisplay);
sunyymq 2009-03-07
  • 打赏
  • 举报
回复
还没解决么?
vigoqiu 2009-03-06
  • 打赏
  • 举报
回复
我不是要把图片压缩显示啊,我只是想在屏幕上显示图片的某个部分,我的代码是有点问题的,所以实现不了,呵呵,刚接触BREW,不知用什么办法
sunyymq 2009-03-06
  • 打赏
  • 举报
回复
IImage *m_IImage = ISHELL_LoadImage(pMe->m_pIShell, "logo.png");//LOAD入图片
IIMAGE_Draw(m_IImage , 0, 0); //从(0,0)画图
AEERect rect;
SETAEERECT(&rect,100,100,20,20); //我想只显示满屏图片的这个区域
IDisplay_SetClipRect(pMe->m_pIDisplay,&rect); //设置区域
IDISPLAY_ClearScreen(pMe->m_pIDisplay);// 清除设置的区域
IDISPLAY_Update(pMe->m_pIDisplay); //更新屏幕
简单的说你的程序是在你画的图上清除一块区域。
如果要画图的一部分,
SETAEERECT(&rect,100,100,20,20); //我想只显示满屏图片的这个区域
IBITMAP_Invalidate(m_IImage ,&rect);//此函数用于扩展位图的修改矩形,以包含 prc 参数中传递的矩形。
IDISPLAY_Update(pMe->m_pIDisplay); //更新屏幕
zsf81 2009-03-06
  • 打赏
  • 举报
回复
当然如果你非要去局部刷新,那么IBITMAP_INVALIDATE,可以设定区域去局部刷,但这MS也和UPDATE没关系
zsf81 2009-03-06
  • 打赏
  • 举报
回复
你不应该去DISPLAY这个小区域,而是要去把IMAGE压缩到那个区域,然后去DRAW

2,851

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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