Graphics.Fillrectangle不会更新

时间:2013-08-23 16:28:52

标签: c# graphics

我有点击启动的事件功能,其中有一个图形说明

    private void pictureBox1_Click(object sender, EventArgs e)
    {
        switch (modCLick)
        {
            case 2: 
                    session.g.FillRectangle(Brushes.Tomato, MousePosition.X, MousePosition.Y, 50, 100);
                break;
        }
        ModCLick = 1;
    }

当我启动程序时,单击不执行任何操作,但如果我按下某个键(仅限某些键),则更改将应用​​(我可以看到矩形)。为什么不正确更新? PS:不要担心案件指示。

1 个答案:

答案 0 :(得分:0)

将图形实例存储在全局变量中是一个非常糟糕的想法。让它看起来像这样:

using (var g = Graphics.FromImage(pictureBox1.Image)) {
   g.FillRectangle(Brushes.Tomato, MousePosition.X, MousePosition.Y, 50, 100);
   pictureBox1.Invalidate();
}

Invalidate()调用是您要查找的调用。 PictureBox只能告诉您更改了Image属性,它无法告诉您更改了图像内容