-1

我正在尝试在 C# 中的 Windows 窗体应用程序上绘制一系列矩形。我正在使用 System.Drawing.Graphics 来绘制矩形。它们工作正常,但是一旦我切换到计算机上的另一个应用程序或最小化表单,它们就会消失。有谁知道为什么会这样?

System.Drawing.Graphics graphics = this.CreateGraphics();
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(
     25 + (32 * PASS_THROUGH), 190, 32, 32);
graphics.DrawRectangle(System.Drawing.Pens.Green, rectangle);
4

1 回答 1

3

你不会以正确的方式绘画。以下是有关其工作原理的一些基本信息:

http://msdn.microsoft.com/en-us/library/kxys6ytf.aspx

您应该具有如下所示的代码:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    Rectangle = new Rectangle(25 + (32 * PASS_THROUGH), 190, 32, 32);
    e.Graphics.DrawRectangle(Pens.Green, Rectangle);
}

Windows 将在需要重新绘制窗口时调用此方法。

如果您希望能够动态更改绘制的内容,则需要向此方法添加逻辑。比如这样写的 if 语句,if (drawRectangle) ...

当您想在更改变量(如我上面的示例)之后向控件发出信号以重新绘制自身时drawRectangle,您只需要调用Control.Invalidate相关控件上的方法即可。

您可以管理许多不同的变量和对象来控制绘制的内容,例如形状列表。然后,在您的绘画方法中,您将遍历这些形状并一一绘制它们。我不确定这是否是您想要做的,或者您是否只想自定义表单的外观并且您不需要它动态更改。

于 2013-10-04T20:35:54.817 回答