当前位置:
首页 >
关于OnPaint、FormPaint会不停的触发 触发多次的情形---讨论总结
发布时间:2024/4/17
69
豆豆
生活随笔
收集整理的这篇文章主要介绍了
关于OnPaint、FormPaint会不停的触发 触发多次的情形---讨论总结
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
关于OnPaint会不停的一直触发 触发多次的问题,是这样的 首先OnPaint是响应windows的WM_PAINT消息的,你显示器上 能看到的比如说 按钮button, memo什么的 都是画出来的
但是再程序运行的过程中 可能会发生变化,比如 你在代码里 定时把一个button删除 你虽然程序上 删除了 这个button 但是 如何让用户看到 还是 需要 反映再 显示器上的,要想反映在
显示器上 那么就需要 重新 再次 把这个 form画一遍。
举例:两个form 其中一个form2.ShowModal 遮罩住了form1 ,假如form1被完全遮罩了 那么 form1的onPaint事件 就不会被触发 ,是由windows 根据显示器 看到的内容 动态的选择
合适的时机 给程序 发送WM_PAINT消息的,那什么叫 合适的时机呢 就是 你眼 当前看到的内容 或 其它情况 比如当前光标再窗体1上 等等 这个是windows 显示技术的核心 具体我们不清楚。
以下是我师傅的说法:
实际上是对WM_PAINT消息的响应实际上,现在的Windows要比早年的,少触发好多次 原来,你窗口被别的窗体遮盖,别的窗体挪走,就会触发,现在一般不会,Windows的桌面混合器会缓存
所以就不一定触发了 你窗口创建完显示时,Windows会发个WM_PAINT消息给程序自绘,你窗体上的控件删除或移动位置时,会调用API来标记某些区域无效,然后Windows会在它认为合适的时间点,发WM_PAINT消息让你的程序重绘显示 重绘是一种优先级比较低的消息,而且Windows会合并这个消息 ----------------------------------------------------------------- 综上:凡是自己绘画的代码 最好写在OnPaint事件里 这样 才能让 windows不停的发送重绘消息 重绘 保持 自己的绘画内容 不消失。 我自己做的demo如下:http://files.cnblogs.com/files/del88/OnPaint.zip
转载于:https://www.cnblogs.com/del88/p/6368128.html
与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是生活随笔为你收集整理的关于OnPaint、FormPaint会不停的触发 触发多次的情形---讨论总结的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: [转]ASP.NET Core基本原理(
- 下一篇: 循环GridView