【发布时间】:2011-01-12 12:03:31
【问题描述】:
我通过图像框将位图加载到 winform 上。当我想更新图像时,我会这样尝试:
imagebox.image = null;
draw(); //implements the drawing of the bitmap and assigns to the imagebox/winform
但是,这只有在我隐藏然后再次显示表单时才有效?我该如何解决这个问题?
编辑:问题已解决。
【问题讨论】:
我通过图像框将位图加载到 winform 上。当我想更新图像时,我会这样尝试:
imagebox.image = null;
draw(); //implements the drawing of the bitmap and assigns to the imagebox/winform
但是,这只有在我隐藏然后再次显示表单时才有效?我该如何解决这个问题?
编辑:问题已解决。
【问题讨论】:
使图像属性设置器更智能。例如:
private Image mImage;
public Image Image {
get { return mImage; }
set {
mImage = value;
Invalidate();
}
}
现在可见图像会自动刷新。
【讨论】:
您是否尝试在 draw() 方法结束时调用 Invalidate(imagebox.Bounds);?
这应该会强制重新绘制,因此您不必再次隐藏和显示表单。
【讨论】:
imagebox.Invalidate()。哦,您不需要每次都生成新图像 - 只需绘制同一个图像即可。效率更高。
您应该查看此链接Bob Powell GDI+ FAQ。它对一些 GDI 基础有一些明确的说明,此链接指向 PictureBox 绘图示例。
基本上,您希望附加到 ImageBox 的 Paint 事件并在每次需要重新绘制时调用 Invalidate()。
【讨论】:
Invalidate() 是。