【发布时间】:2009-11-29 00:45:40
【问题描述】:
我在使用Graphics.DrawImage 时遇到了一个奇怪的问题。
当在OnPaint 中使用e.Graphics.DrawImage(Image, Point) 在控件上绘制位图“缓冲区”时,似乎省略了部分图像。缓冲区填充在一个辅助方法中,该方法使用从它构造的Graphics 直接绘制到Bitmap 上。当控件绘制时,缓存的位图会绘制在控件上。
位图本身似乎没有任何遗漏,因为当我将位图保存到光盘并检查时,它就在那里。 (见下图)
这是位图缓冲区的样子:
(来源:zachjohnson.net)
这是控件上显示的内容:
(来源:zachjohnson.net)
这就是我在OnPaint所做的一切:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (this.bufferInvalid)
{
this.UpdateBuffer();
}
if (this.buffer != null)
{
e.Graphics.DrawImage(this.buffer, Point.Empty);
}
}
【问题讨论】:
-
省略了哪些部分?你从哪里得到位图?你做什么来触发 Paint 事件?
-
我编辑了我的问题并添加了更多细节,包括图片。
标签: .net winforms gdi+ drawing bitmap