我有一个名为“buffer”的Bitmap,我
在每个步骤之后,我在缓冲区的Graphics对象上调用Flush(FlushIntention.Sync)
。然后我将缓冲区的内容绘制到屏幕控件上。
然而,在调试时,我注意到有时缓冲区没有绘制渐变。即使我明确调用同步Flush命令,也可能导致第二个绘制操作被跳过?
有解决方法吗?
编辑:代码示例
Bitmap background = ....;
Bitmap buffer = new Bitmap(100, 100);
Rectangle bufferBounds = new Rectangle(0, 0, buffer.Width, buffer.Height);
Graphics bufferG = Graphics.FromImage(buffer);
// First step
bufferG.DrawImageUnscaled(background, 0, 0);
bufferG.Flush(FlushIntention.Sync);
// Second step
LinearGradientBrush lgb = new LinearGradientBrush(bufferBounds,
maxColor, minColor, LinearGradientMode.Vertical);
bufferG.FillRectangle(lgb, bufferBounds);
bufferG.Flush(FlushIntention.Sync);
答案 0 :(得分:0)
我注意到你没有在using块中创建Graphics对象。是否需要Dispose()才能完全冲洗它?
using (Graphics bufferG = Graphics.FromImage(buffer)
{
...
}