emwin如何在窗口中显示位图的一部分(注,除了切图)

1024很个性 2018-04-16 05:52:44
是这样的
我先创了个window控件
然后在这个控件的基础上想显示一张图片(假设图片原大小位100x100)
但是我想根据需求显示这张图片的不同部位(比如只显示上半部分或者下半部分)
不采用切片的方法(比如将图片切成两张按需求显示,因为实际中我的图片需要分的很细,这样的话切片不太实际)

我尝试过设置一个合适的用户裁剪区,然后将用GUI_DrawBitmap进行显示可以成功(这是在没有window控件的情况下)
然而一旦加上window控件后,上面的方法就行不通了
感觉在window控件上,所有的显示都需要借助其他控件进行,比如我不能随心所欲的显示数字,必须先创建一个TEXT控件,然后在这个控件上显示;又或者我不能像在背景上面一样随意的调用GUI_DrawBitmap显示图片,必须先创一个IMAGE控件,然后用
IMAGE_SetBitmap才能显示图片
其他所有的适用于背景绘制的函数(我是这样认为的,像上面提到的GUI_DrawBitmap,GUI_DispString等)在window控件上都不适用,或者说这些函数确实进行了绘制,只不过是在背景层,因为被window控件遮掩了,所以看不出来

所以我想问下有没有什么办法,我之前是这样想的:把我像显示的图片整个地贴到IAMGE控件上,然后在IMAGE控件里设置一个合适的用户剪切区,这样就能显示我想显示的部分,可是结果行不通

希望能有人帮个忙,给个思路就行了,谢谢!
...全文
1891 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fendaomolu 2020-02-10
  • 打赏
  • 举报
回复
不知道楼主解决了没,你说这个在实际项目中确实很实用
91program 2018-07-19
  • 打赏
  • 举报
回复
引用 1 楼 cftxlin 的回复:
把图片装载进内存,应该可以取出为一个一个的像素点,根据需要取哪些部分的点再绘制应该是可行的。

在早用EVC的开发WinCE的时候,处理过一个这样的应用,可刚翻代码,怎么也翻不出来了


Windows 平台下是可以这样处理的,采用双缓冲技术。先将图片加载到内存DC,再从内存DC 中复制指定位置和大小的部分到实际显示DC上。
  • 打赏
  • 举报
回复
把图片装载进内存,应该可以取出为一个一个的像素点,根据需要取哪些部分的点再绘制应该是可行的。 在早用EVC的开发WinCE的时候,处理过一个这样的应用,可刚翻代码,怎么也翻不出来了

19,500

社区成员

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

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