硬汉嵌入式论坛

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

[emWin] 请问下圆形的进度条 如何实现?

[复制链接]

4

主题

19

回帖

74

积分

初级会员

积分
74
发表于 2017-7-27 08:44:14 | 显示全部楼层 |阅读模式
111.jpg 就是这个蓝色的进度条。

还一个问题, 就是如果使用双层的话,为什么 第二层的文字 是有锯齿的呢?
还有 emwin 能实现图片的旋转吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-7-27 10:06:03 | 显示全部楼层
1. 2D的圆弧绘制就行。
2. 别用双图层,单图层就行
3. 没问题,存储设备章节有相关函数。
回复

使用道具 举报

4

主题

19

回帖

74

积分

初级会员

积分
74
 楼主| 发表于 2017-7-28 16:00:43 | 显示全部楼层
单图层的,像更新文字 65的话, 假设背景不是 纯色,好像就没办法弄,  总不能把所有带背景的 数字都截图,然后显示上去么
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-7-28 16:20:04 | 显示全部楼层

回 morgen1 的帖子

morgen1:单图层的,像更新文字 65的话, 假设背景不是 纯色,好像就没办法弄,  总不能把所有带背景的 数字都截图,然后显示上去么
(2017-07-28 16:00)
没问题,背景图片就在窗口的WM_PAINT回调消息里面绘制就行,不用管它。

而你的这个表盘也在窗口的WM_PIANT消息里面绘制,更新的时候,使用定时器更新,且仅更新表盘区域,参考V6综合Demo的时钟表盘界面:
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=17330
12_58_ade7c3fec8b343f.png
回复

使用道具 举报

4

主题

19

回帖

74

积分

初级会员

积分
74
 楼主| 发表于 2017-7-29 10:07:48 | 显示全部楼层
我看了这个例子, 有3个问题:
1、如果我要使整个屏幕的背景也是张图片,不是纯白的,要怎么做?如果用回调函数的 WM_PAINT去做,那么每次都要重绘占用的时间很长呀。  如果不在 WM_PAINT做,然后在 WM_INIT_DIALOG 这里去做,好像图片是显示不上去 的。

2、假设全屏背景也是图片,然后我用单层的话,那更新局部数字的话,是不是要把数字所在的背景图一起重绘,不然光更新数字 背景可能就是黑色或者白色的?

3、图中的分针秒针是通过多边形绘制的,那么如果用图片呢, 图片是要做成PNG格式吗?因为图片旋转过去,底背景在变,那么就会时钟背景 和 分针秒针背景不能融为一体。
回复

使用道具 举报

4

主题

19

回帖

74

积分

初级会员

积分
74
 楼主| 发表于 2017-7-29 10:13:39 | 显示全部楼层

回 eric2013 的帖子

eric2013:没问题,背景图片就在窗口的WM_PAINT回调消息里面绘制就行,不用管它。

而你的这个表盘也在窗口的WM_PIANT消息里面绘制,更新的时候,使用定时器更新,且仅更新表盘区域,参考V6综合Demo的时钟表盘界面:
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=17330
....... (2017-07-28 16:20) 
另外这个 WM_InvalidateRect(hWin, &rRTC);  是仅更新指定这个区域吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-7-29 10:14:29 | 显示全部楼层

回 morgen1 的帖子

morgen1:我看了这个例子, 有3个问题:
1、如果我要使整个屏幕的背景也是张图片,不是纯白的,要怎么做?如果用回调函数的 WM_PAINT去做,那么每次都要重绘占用的时间很长呀。  如果不在 WM_PAINT做,然后在 WM_INIT_DIALOG 这里去做,好像图片是显示不上去 的。

2、假设全屏背 .. (2017-07-29 10:07) 
1和2 :就是在WM_PAIT消息里面做的,先把整个背景图片贴上,然后表盘的所有绘制也都贴上,更新的时1候仅更新表盘区域,有专门的API函数的,刷新的时候emWin会自动做剪切处理。

3. 背景你不用管,你就按照第一步所说的做即可,把指针旋转,表盘全部做在里面。
回复

使用道具 举报

4

主题

19

回帖

74

积分

初级会员

积分
74
 楼主| 发表于 2017-7-29 16:18:52 | 显示全部楼层

Re:请问下圆形的进度条 如何实现?

eric2013:

1和2 :就是在WM_PAIT消息里面做的,先把整个背景图片贴上,然后表盘的所有绘制也都贴上,更新的时1候仅更新表盘区域,有专门的API函数的,刷新的时候emWin会自动做剪切处理。

3. 背景你不用管,你就按照第一步所说的做即可,把指针旋转,表盘全部做在里面。
未标题-2.jpg 我意思是如果指针是像这样的图片,背景不是有白色么,需要把这个图片做成png格式,再叠加到表盘上旋转么?

150447q1hq84ccmtq1cev4.gif 类似这样的 雷达的效果,在转的应该也是一个图片吧,然后在叠加到底图上。这时候转的图片是不是弄成png格式就行
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-7-30 15:20:01 | 显示全部楼层

回 morgen1 的帖子

morgen1:我意思是如果指针是像这样的图片,背景不是有白色么,需要把这个图片做成png格式,再叠加到表盘上旋转么?

类似这样的 雷达的效果,在转的应该也是一个图片吧,然后在叠加到底图上。这时候转的图片是不是弄成png格式就行
 (2017-07-29 16:18) 
图片用位图,png还需要解码,太耽误时间。

你的这个雷达的,直接弄个GIF是不是更合适些。
回复

使用道具 举报

4

主题

19

回帖

74

积分

初级会员

积分
74
 楼主| 发表于 2017-7-31 09:33:20 | 显示全部楼层

回 eric2013 的帖子

eric2013:

图片用位图,png还需要解码,太耽误时间。

你的这个雷达的,直接弄个GIF是不是更合适些。
雷达这个是示例,我是想做多个主题的表盘。像这样,指针都不一样,如果 把指针单独 用bmp取出来,肯定会有背景色,然后选择bmp的时候 背景色 和 表盘的背景色 叠加的时候 不就会不一样么。
未标题-1.jpg 未标题-3.jpg 未标题-5.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-7-31 10:04:15 | 显示全部楼层

回 morgen1 的帖子

morgen1:雷达这个是示例,我是想做多个主题的表盘。像这样,指针都不一样,如果 把指针单独 用bmp取出来,肯定会有背景色,然后选择bmp的时候 背景色 和 表盘的背景色 叠加的时候 不就会不一样么。
 (2017-07-31 09:33) 
BMP要用ARGB格式的,带alpha通道的。
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2017-11-1 15:56:38 | 显示全部楼层

Re:请问下如何用2D绘图来生成异形进度条?

请问下如何用2D绘图来生成异形进度条?比如三角形、圆形或者格子形状。
IA3H2{O3B[SOIE8$8OPR6DJ.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-11-1 16:44:56 | 显示全部楼层

回 mqqmo 的帖子

mqqmo:请问下如何用2D绘图来生成异形进度条?比如三角形、圆形或者格子形状。 (2017-11-01 15:56) 
这个2D函数里面有多边形绘制API,可以调用这些函数。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-19 22:36 , Processed in 0.051849 second(s), 33 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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