硬汉嵌入式论坛

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

[emWin] 【干货分享】对话框或者窗口上面任意绘制2D图形的方法,不限制在回调函数WM_PAINT消

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115830
QQ
发表于 2016-9-21 19:20:58 | 显示全部楼层 |阅读模式
经常会有网友问这方面的问题,在回调函数的WM_PAINT消息里面绘制非常的不方便,而且不方便更新。
而且为什么可以在桌面窗口上面能够任意绘制,而新创建的窗口就不行。对于这个问题的关键就在函数
WM_SelectWindow。
=======================================
比如我们要在窗口上面绘制一个梯度图形实现方法如下:
1.png
又比如在对话框回调函数的按钮消息里面绘制实现方法如下:
2.png

显示效果如下:
0.png

========================================
分析总结:
1.  系统上电后,默认2D图形可以绘制的窗口就是桌面窗口,所以可以直接在桌面窗口上面绘制。
2.  在WM_PAINT消息里面能够绘制也是因为在系统在进入WM_PAINT消息前已经通过函数WM_SelectWindow进行了选择。
3.  最后一条,这个非常重要,这种2D图形的绘制方式不支持自带重绘,如果用户拖动窗口或者这部分区域被其它窗口覆盖了
     它不会进行自动重绘的,这个得用户自己去维护重绘。所以,一般情况下还是建议在WM_PAINT消息里面做2D图形绘制。








回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
发表于 2016-11-11 09:19:15 | 显示全部楼层
重绘的图形会被控件给覆盖住
QQ图片20161111091915.png
回复

使用道具 举报

2

主题

15

回帖

21

积分

新手上路

积分
21
发表于 2021-12-4 19:43:30 | 显示全部楼层
数值显示函数也是这样 ,默认只能在桌面窗口显示,是不是也可以采取这种方法,在任意窗口上直接显示数值?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115830
QQ
 楼主| 发表于 2021-12-6 14:50:57 | 显示全部楼层
恺撒 发表于 2021-12-4 19:43
数值显示函数也是这样 ,默认只能在桌面窗口显示,是不是也可以采取这种方法,在任意窗口上直接显示数值?

可以的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-21 10:26 , Processed in 0.320942 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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