使用双缓冲绘制图形的问题。
现在有一个窗口,窗口上有一个panel1,panel1上又有一个panel2.在panel2上用双缓冲绘制图形。图形很简单,就是一般的长方形。
设置双缓冲的代码如下:
this.SetStyle(ControlStyles.UserPaint, true);//自绘
this.SetStyle(ControlStyles.DoubleBuffer, true);// 双缓冲
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
但是结果是,绘制的图形都没有显示出来。
我注释掉 this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 这行代码,就可以显示绘制的图形。
请问这是什么原因?
我之所以要使用双缓冲,是因为在滚动条事件中,重绘了panel2上的图形,要解决闪烁的问题。
这段代码是在一个比较大的工程中写的,出了上述的问题。但是我重新建一个工程,利用上面的代码绘制,是没有问题的。请问
有什么因素可能会导致以上的问题?
非常感谢!
设置双缓冲的代码如下:
this.SetStyle(ControlStyles.UserPaint, true);//自绘
this.SetStyle(ControlStyles.DoubleBuffer, true);// 双缓冲
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
但是结果是,绘制的图形都没有显示出来。
我注释掉 this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 这行代码,就可以显示绘制的图形。
请问这是什么原因?
我之所以要使用双缓冲,是因为在滚动条事件中,重绘了panel2上的图形,要解决闪烁的问题。
这段代码是在一个比较大的工程中写的,出了上述的问题。但是我重新建一个工程,利用上面的代码绘制,是没有问题的。请问
有什么因素可能会导致以上的问题?
非常感谢!
...全文
相关推荐
C#中使用双缓冲以及BitBlt提高GDI+绘图效率的示例程序
然而,直接使用GDI+进行频繁的绘图操作可能会导致屏幕闪烁,降低用户体验。为了解决这个问题,开发者通常会采用双缓冲技术和BitBlt函数来提高绘图效率。双缓冲是一种优化技术,主要用于减少屏幕闪烁。
VC 绘制图形和文字(双缓冲)
对于动态图形的绘制,一个常见的问题就是闪烁,这是由于屏幕重绘过程中不完整画面的快速切换造成的。为了解决这个问题,我们可以采用双缓冲技术。
c++双缓冲绘图的实现
示例中,我们将绘制一系列的同心圆,并观察在没有使用双缓冲技术时的闪烁现象,以及使用双缓冲技术后如何消除这一问题。
使用DirectDraw的双缓冲图形
双缓冲是DirectDraw中的一个重要概念,它解决了屏幕闪烁的问题,提高了图像渲染的流畅性。
GDI+双缓冲绘制碰撞小球
在这个项目中,开发者可能使用了简单的物理模型,比如弹性碰撞,来确保小球在碰撞后的运动轨迹合理且真实。关于GDI+绘图的屏闪问题,主要是由于屏幕刷新率与绘制速率不匹配造成的。


