【问题标题】:C# redrawing graphics on winformC#在winform上重绘图形
【发布时间】:2011-01-12 12:03:31
【问题描述】:

我通过图像框将位图加载到 winform 上。当我想更新图像时,我会这样尝试:

imagebox.image = null;
draw();  //implements the drawing of the bitmap and assigns to the imagebox/winform

但是,这只有在我隐藏然后再次显示表单时才有效?我该如何解决这个问题?

编辑:问题已解决。

【问题讨论】:

    标签: c# winforms bitmap


    【解决方案1】:

    使图像属性设置器更智能。例如:

    private Image mImage;
    
    public Image Image {
        get { return mImage; }
        set { 
            mImage = value;
            Invalidate();
        }
    }
    

    现在可见图像会自动刷新。

    【讨论】:

    • 谢谢汉斯。我现在确实可以使用。当我重新绘制位图时,我在重新创建表单和 Imagebox 时犯了一些愚蠢的错误。
    【解决方案2】:

    您是否尝试在 draw() 方法结束时调用 Invalidate(imagebox.Bounds);

    这应该会强制重新绘制,因此您不必再次隐藏和显示表单。

    【讨论】:

    • 或者您可以直接致电imagebox.Invalidate()。哦,您不需要每次都生成新图像 - 只需绘制同一个图像即可。效率更高。
    • 图像框确实无效。我在上面的编辑中包含了代码。
    【解决方案3】:

    您应该查看此链接Bob Powell GDI+ FAQ。它对一些 GDI 基础有一些明确的说明,此链接指向 PictureBox 绘图示例。

    基本上,您希望附加到 ImageBox 的 Paint 事件并在每次需要重新绘制时调用 Invalidate()。

    【讨论】:

    • 由于 PictureBox 已经擅长在必要时重新绘制其图像,我认为 Paint 事件是不必要的。 Invalidate() 是。
    • 感谢您的链接。会检查出来的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多