猿问

请问c#为了实现实时曲线的绘制,防止频闪,该怎么做?

c#为了实现实时曲线的绘制,然后再panel的paint事件中开启了线程,线程中使用while循环,在while循环中绘制bitmap并显示在panel中此时一点都不闪烁。但是,当只是在paint中获取bitmap然后绘制在panel中,然后再外部调用 refresh()进行刷新时就闪的厉害,这是为什么。似乎双缓冲区没作用

慕桂英546537
浏览 255回答 2
2回答

人到中年有点甜

建议:PaintEventArgs中有ClipRectangle属性,是用来描述需要重绘的位置大小。只需要更新这个部分就可以了。其实windows中的双缓冲就是把背景生成图片在刷新到界面上,你现在做的和双缓冲没啥区别了。另外你可以把panel换成picturebox尝试一下。

慕莱坞森

在paint 事件中绘图绘图时,创建一个内存bitmap,先把图在这里绘制好,最后才把这个绘制好的图复制到panel的bitmao里面去。后台线程更新数据和刷新屏幕
随时随地看视频慕课网APP
我要回答