博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决绘图中闪烁的问题(C#)
阅读量:6007 次
发布时间:2019-06-20

本文共 689 字,大约阅读时间需要 2 分钟。

如果你在Form中绘图的话,不论是不是采用的双缓存,都会看到图片在更新的时候都会不断地闪烁,解决方法就是在这个窗体的构造函数中增加以下三行代码:

请在构造函数里面底下加上如下几行:
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲

参数说明:

UserPaint

如果为 true,控件将自行绘制,而不是通过操作系统来绘制。此样式仅适用于派生自 Control 的类。

AllPaintingInWmPaint

如果为 true,控件将忽略 WM_ERASEBKGND 窗口消息以减少闪烁。仅当 UserPaint 位设置为 true 时,才应当应用该样式。

DoubleBuffer

如果为 true,则绘制在缓冲区中进行,完成后将结果输出到屏幕上。双重缓冲区可防止由控件重绘引起的闪烁。要完全启用双重缓冲,还必须将 UserPaint 和 AllPaintingInWmPaint 样式位设置为 true。

参考资料:
如何解决CSharp中动画闪烁问题?
C#中双缓存绘图的实现方法。

以上你不是在窗体上绘图,需要你自己写一个控件,在这个控件的构造函数上增加上上述三行代码。

转载于:https://www.cnblogs.com/kevinGao/archive/2011/10/31/2231520.html

你可能感兴趣的文章
《C#多线程编程实战(原书第2版)》——2.5 使用AutoResetEvent类
查看>>
《量化金融R语言初级教程》一2.5 协方差矩阵中的噪声
查看>>
并发网每月TOP10文章
查看>>
黑客究竟用什么姿势偷走了你的钱? | 硬创公开课
查看>>
超越Hadoop的大数据分析之第一章介绍:为什么超越Hadoop Map-Reduce
查看>>
暗渡陈仓:用低消耗设备进行破解和渗透测试3.6 本章附录:深入分析安装脚本...
查看>>
自己动手构造编译系统:编译、汇编与链接2.5 链接程序的设计
查看>>
深入SQLServer日志收缩
查看>>
Serverless日志处理挑战与方案
查看>>
Apache Common Math Stat
查看>>
Intellij idea配置scala开发环境
查看>>
《C++语言基础》实践项目——运算符重载(一)
查看>>
【云栖大会】云端商业,数据梦想
查看>>
ios9 HTTPS
查看>>
天猫技术全面打造『身临其境』的消费者交互体验
查看>>
[实践] Android5.1.1源码 - 让某个APP以解释执行模式运行
查看>>
快学Java SE8--Java8函数式编程(一)
查看>>
boost的字符串处理函数——format
查看>>
RHCE 学习笔记(24) - LVM 逻辑卷
查看>>
前端模块管理器简介
查看>>