硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2721|回复: 13
收起左侧

[emWin] emwin显示图片问题

[复制链接]

9

主题

39

回帖

66

积分

初级会员

只要努力,没有什么办不到

积分
66
发表于 2019-5-30 18:20:29 | 显示全部楼层 |阅读模式
本帖最后由 billy226 于 2019-5-30 18:27 编辑

请教下,在emwin中,背景是用的图片,然后在背景图片上显示png格式的电池图标,如下图,但是我想要充电时电池图标滚动显示,应该怎么让电池条滚动显示?我现在能将5条电池条从1--5显示出来,然后要清掉重新显示,不知道用哪个GUI函数可以清除?看了下png的GUI函数,好像不支持清除





QQ图片20190530181015.png
2.png
4.png

补充下,显示电池条用的是下面这种方式

补充下,显示电池条用的是下面这种方式

试过用这种方式,png图片显示不出来

试过用这种方式,png图片显示不出来
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-5-30 18:28:10 | 显示全部楼层
不要用PNG格式,速度慢,改用位图,刷新的时候直接覆盖之前的就行。
回复

使用道具 举报

9

主题

39

回帖

66

积分

初级会员

只要努力,没有什么办不到

积分
66
 楼主| 发表于 2019-5-30 18:39:08 | 显示全部楼层
eric2013 发表于 2019-5-30 18:28
不要用PNG格式,速度慢,改用位图,刷新的时候直接覆盖之前的就行。

你的意思,电池条填充块做成bmp位图格式,用位图方式覆盖?那如果5个填充块覆盖完,要怎么清除呢?比如从右边到左边1秒填充一块,填充到最左边后,要清掉,再从右边开始,是做一个背景颜色大小的块去覆盖之前的吗?
回复

使用道具 举报

9

主题

39

回帖

66

积分

初级会员

只要努力,没有什么办不到

积分
66
 楼主| 发表于 2019-5-30 18:43:19 | 显示全部楼层
另外,位图填充,是用下面这个方式吗?有没有更简洁的方式,这样每次都要创建ICONVIEW,第一次用emwin,谢谢硬汉的指导
182607mzgznsstzzws334b.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115778
QQ
发表于 2019-5-30 18:48:04 | 显示全部楼层
billy226 发表于 2019-5-30 18:39
你的意思,电池条填充块做成bmp位图格式,用位图方式覆盖?那如果5个填充块覆盖完,要怎么清除呢?比如从 ...

就是BmpCvt转接的位图。

无需清除,像绘制那个,直接覆盖运来的那个就行。
回复

使用道具 举报

9

主题

39

回帖

66

积分

初级会员

只要努力,没有什么办不到

积分
66
 楼主| 发表于 2019-5-31 09:24:59 | 显示全部楼层
eric2013 发表于 2019-5-30 18:48
就是BmpCvt转接的位图。

无需清除,像绘制那个,直接覆盖运来的那个就行。

首先再次感谢硬汉的指点,我按照你说的方法,用BmpCvt将png图片转成.c文件,通过调用GUI_DrawBitmap函数显示,发现只能在纯色背景下可以显示,如果创建了对话框后,带图片背景下是显示不出来的,详见下图

在纯色背景下能显示

在纯色背景下能显示

采用清屏背景为蓝色

采用清屏背景为蓝色

采用创建对话框方式

采用创建对话框方式

调用GUI_DrawBitmap函数

调用GUI_DrawBitmap函数

位图显示不出来

位图显示不出来
回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2019-5-31 09:57:49 | 显示全部楼层
做成gif,每一个电量和空的都是一帧,需要哪帧显示哪帧,行不行?
回复

使用道具 举报

9

主题

140

回帖

187

积分

初级会员

积分
187
QQ
发表于 2019-5-31 10:02:06 | 显示全部楼层
wx_NF5xAVDv 发表于 2019-5-31 09:57
做成gif,每一个电量和空的都是一帧,需要哪帧显示哪帧,行不行?

做5张图片,用IMAGE控件换图片,简单省事
回复

使用道具 举报

9

主题

39

回帖

66

积分

初级会员

只要努力,没有什么办不到

积分
66
 楼主| 发表于 2019-5-31 12:42:19 | 显示全部楼层
wx_NF5xAVDv 发表于 2019-5-31 09:57
做成gif,每一个电量和空的都是一帧,需要哪帧显示哪帧,行不行?

谢谢,我试试,对emwin不熟,项目又急,没时间研究
回复

使用道具 举报

9

主题

39

回帖

66

积分

初级会员

只要努力,没有什么办不到

积分
66
 楼主| 发表于 2019-5-31 12:43:32 | 显示全部楼层
allyzc 发表于 2019-5-31 10:02
做5张图片,用IMAGE控件换图片,简单省事

谢谢,你是说做5张带电池框不同电量的图片,一张张换,是吗?
回复

使用道具 举报

12

主题

104

回帖

140

积分

初级会员

积分
140
发表于 2019-5-31 14:17:25 | 显示全部楼层
billy226 发表于 2019-5-31 12:43
谢谢,你是说做5张带电池框不同电量的图片,一张张换,是吗?

我是这样做。一个电池框,PNG转C文件后在WM_PAINT调用,然后画5个圆角矩形填充作为电量,这样就不用图片了
回复

使用道具 举报

9

主题

140

回帖

187

积分

初级会员

积分
187
QQ
发表于 2019-5-31 17:27:35 | 显示全部楼层
billy226 发表于 2019-5-31 12:43
谢谢,你是说做5张带电池框不同电量的图片,一张张换,是吗?

是的,5张图片带不同的电量,图片放到一个数组BITMAP bitmap[5] = {&ba1, &ba2, &ba3, &ba4, &ba5};用IMAGE控件,要显示哪格电量,就用IMAGE_SetBitmap(hwin, bitmap[0]);,最简单了,代价是花点ROM空间
回复

使用道具 举报

39

主题

1504

回帖

1626

积分

至尊会员

积分
1626
发表于 2019-6-1 08:06:16 | 显示全部楼层
billy226 发表于 2019-5-31 09:24
首先再次感谢硬汉的指点,我按照你说的方法,用BmpCvt将png图片转成.c文件,通过调用GUI_DrawBitmap函数 ...

外框用图片,内部填充矩形块就可以了,
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-6-1 08:46:01 | 显示全部楼层
sanit 发表于 2019-6-1 08:06
外框用图片,内部填充矩形块就可以了,

这个正点。 我现在是画一个很小的矩形作为电池头,电量显示直接用进度条。 上一个版本显示百分数。后来有2%的波动就去掉了百分数的显示。
Releasing your creativity
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-18 05:01 , Processed in 0.313477 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表