日期:2014-05-18  浏览次数:20922 次

双缓冲中使用 BufferedGraphics 的一个大问题
使用了 BufferedGraphics 来实现双缓冲。

我以前一直使用 Image 来实现双缓冲的。

这次好玩,把一些控件改成了 BufferedGraphics , 然后发现一个问题。

简单的说就是: BufferedGraphics 无法Clear ,准确的说无法使用 透明颜色 进行Clear
比如 有一个 BufferedGraphics grafx,

1.如果我们 grafx.Graphics.Clear( Color.FromArgb(128,0,0,0) ;

2.随后我们在一个函数内调用: grafx.Render( OutGraphics ) ;
  其中OutGraphics是一个外部的Graphics

结果:

画在 OutGraphics 中的将是一个黑色的画块,而不是一个半透明的画块。

但是如果我们用 Graphics.FromImage 来绘画,最后就是一个正常的半透明画块。

谁能告诉我为什么,谢谢?

------解决方案--------------------
顶一个,最近也在研究绘图 很有意思...