硬汉嵌入式论坛

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

[emWin] 叠加透明窗口实现动态显示

[复制链接]

17

主题

70

回帖

121

积分

初级会员

积分
121
发表于 2018-7-19 23:30:53 | 显示全部楼层 |阅读模式
想实现一个这样的界面:屏幕480*320,使能WM_SetCreateFlags(WM_CF_MEMDEV)。窗口A显示一张480*320BMP图片或者一个480*320的MEMDEV,定时移动。窗口B叠加在窗口A之上,使用透明效果,显示一个带透明度的40*40位图,定时移动。窗口A、B的父窗口都是WM_HBKWIN。现在分别在各自回调函数中,绘制相关位图。
但是在实际中,移动A窗口的时候,窗口B闪烁。调试发现,在窗口A的WM_PAINT事件中,直接将图片刷到了屏幕上,此时B窗口被覆盖了。然后再重绘B窗口。连续的看,就是B窗口在闪烁。请问各位,像这种透明窗口的叠加显示,该如何操作避免闪烁?
看了一些历程,好多都是用的2图层来实现,一个是背景图层,一个是专门的透明图层。请问多图层混合的时候是一定要硬件支持还是只需要软件支持?
谢谢各位,麻烦指点一下小弟


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117568
QQ
发表于 2018-7-20 01:45:46 | 显示全部楼层
回复

使用道具 举报

17

主题

70

回帖

121

积分

初级会员

积分
121
 楼主| 发表于 2018-7-20 08:57:16 | 显示全部楼层
eric2013 发表于 2018-7-20 01:45
是不是这种效果:
https://forum.anfulai.cn/forum.ph ... hlight=%CD%B8%C3%F7

对,但是他这个是对话框透明。我要的是窗口透明。我也按这个历程改了,还是没用
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117568
QQ
发表于 2018-7-20 10:08:20 | 显示全部楼层
1314一路向前 发表于 2018-7-20 08:57
对,但是他这个是对话框透明。我要的是窗口透明。我也按这个历程改了,还是没用

你直接跑他这个例程有问题没。
回复

使用道具 举报

17

主题

70

回帖

121

积分

初级会员

积分
121
 楼主| 发表于 2018-7-20 11:07:29 | 显示全部楼层
他用的是FRAMEWIN,所以他设置了FRAMEWIN以及客户区的回调函数。我用的是窗口,所以只设置了窗口回调。所以我按他的跑会闪烁。我等会按他的改成一模一样试试
回复

使用道具 举报

0

主题

34

回帖

34

积分

新手上路

积分
34
发表于 2018-7-21 11:52:10 | 显示全部楼层
一个图层软件可以实现
回复

使用道具 举报

17

主题

70

回帖

121

积分

初级会员

积分
121
 楼主| 发表于 2018-7-23 09:31:09 | 显示全部楼层
谢谢,已经搞定。在GUI_Init前加创建窗口标志,默认使用存储设备,这样背景窗口才会有存储设备,就不会闪屏罗。十分流畅。
多图层如果用软件混合,岂不是很费时间!那还不如做成一层。硬件支持混合,采用多层才合适。
回复

使用道具 举报

12

主题

104

回帖

140

积分

初级会员

积分
140
发表于 2018-9-4 17:11:38 | 显示全部楼层
1314一路向前 发表于 2018-7-23 09:31
谢谢,已经搞定。在GUI_Init前加创建窗口标志,默认使用存储设备,这样背景窗口才会有存储设备,就不会闪屏 ...

大哥,可否分享下怎么解决的?我试过WM_SetCreateFlags(WM_CF_MEMDEV);加在GUI_Init();前面还是后面都是背景变灰色。 我是创建一个窗口 后WM_SetCallback();这个就窗口就变透明了,但我现在是移动窗口就会出现一层层的移动过的重绘痕迹
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
发表于 2019-1-15 10:54:26 | 显示全部楼层
MARK一下,以后回来学习
回复

使用道具 举报

9

主题

50

回帖

77

积分

初级会员

积分
77
发表于 2021-8-14 16:02:19 | 显示全部楼层
1314一路向前 发表于 2018-7-23 09:31
谢谢,已经搞定。在GUI_Init前加创建窗口标志,默认使用存储设备,这样背景窗口才会有存储设备,就不会闪屏 ...

加啥窗口标志?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117568
QQ
发表于 2021-8-15 08:14:40 | 显示全部楼层

WM_SetCreateFlags(WM_CF_MEMDEV);
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-15 19:39 , Processed in 0.047841 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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