【问题标题】:WinForms Draw, Then Move RectangleWinForms 绘制,然后移动矩形
【发布时间】:2014-05-30 12:28:20
【问题描述】:

我有一个矩形,我正尝试使用 C# 在 WinForms 项目中绘制。我正在窗体的 Paint 事件上绘制矩形:

private void onPaintHandler(object sender, PaintEventArgs e) {
    using (Pen pen = new Pen(Color.Black, 1)) {
        Brush brush = new SolidBrush(Color.Gray);

        e.Graphics.FillRectangle(brush, 0, this.Height - 100, this.Width, 100);
        e.Graphics.DrawRectangle(pen, -1, this.Height - 100, this.Width, 100);

        brush.Dispose();
        pen.Dispose();
    }
}

我对能够移动矩形很感兴趣。如果我在上面的代码中在运行时更改位置值,我会看到在多个位置绘制了同一个矩形,但实际上并没有“移动”。

感谢您的宝贵时间。

【问题讨论】:

  • 您需要保留坐标并在更改时调用 invalidate()。
  • 您无需致电pen.Dispose()...这就是using 的用途。出于同样的原因,在Brush 上放一个。
  • @Taw 我在表单上调用了Invalidate(),它按预期工作。如果您发表评论作为答案,我会接受。
  • @DonBoitnott 好点,谢谢。

标签: c# winforms drawing rectangles


【解决方案1】:

您需要保留类变量中的坐标 并在更改时致电Invalidate()

这将导致初始 Paint 事件触发,除了 Windows 注意到控件或窗体的表面不再有效的时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2014-12-25
    • 2012-10-31
    相关资源
    最近更新 更多