C#有类似帕斯卡画布的东西吗?

C#有类似帕斯卡画布的东西吗?,c#,drawing,C#,Drawing,在Pascal中,很容易画线,因为你可以直接在表单上画。在尝试在C#fon r中找到一些相关的东西很长一段时间后,现在我没有发现任何有用的东西。我的问题是: 在C#中有没有办法像在Pascal中那样管理此任务 如果不是,我可以使用什么“标准”的其他解决方案来实现这样一个海龟 如果您使用的是WinForms,请看一下MSDN上的这个示例,它显示了如何使用System.Drawing.Graphics直接在表单上绘制 此代码示例直接来自该链接: System.Drawing.SolidBrush

在Pascal中,很容易画线,因为你可以直接在表单上画。在尝试在C#fon r中找到一些相关的东西很长一段时间后,现在我没有发现任何有用的东西。我的问题是:

  • 在C#中有没有办法像在Pascal中那样管理此任务
  • 如果不是,我可以使用什么“标准”的其他解决方案来实现这样一个海龟

如果您使用的是WinForms,请看一下MSDN上的这个示例,它显示了如何使用
System.Drawing.Graphics直接在表单上绘制

此代码示例直接来自该链接:

System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
System.Drawing.Graphics formGraphics;
formGraphics = this.CreateGraphics();
formGraphics.FillRectangle(myBrush, new Rectangle(0, 0, 200, 300));
myBrush.Dispose();
formGraphics.Dispose();

覆盖窗体上的
OnPaint
,然后可以使用
PaintEventArgs
中的图形对象在窗体上绘制:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);
    e.Graphics.DrawRectangle(Pens.Red, new Rectangle(0,0,20,20));
    e.Graphics.DrawLine(Pens.Blue, 20,20,30,30);
    e.Graphics.DrawIcon(this.Icon, new Rectangle(30,30,30,30));
}
这将生成一个如下所示的表单:


我的帕斯卡时代已经过去很久了。假设使用Winforms,您应该首先查看图形模型,即
Paint
事件。在这里可以找到要绘制的控件或窗体的图形表面(作为
e.Graphics
参数)。您可以直接绘制,但实际上应该收集绘制操作列表,并通过使控件或窗体无效而在
绘制中绘制它们。人们通常在面板上画画,但几乎所有的控件都可以在上面画画。如果我没记错的话,VCL画布确实负责重画,对吗?除了用要绘制的内容列表编写绘制事件脚本之外,还有一种方法是在
图片盒的
图像上绘制。此控件还将安全保存其图形。查找它,这里有很多示例。.无论如何,在调用基时为什么要重写?@TaW文档状态为可能需要该事件的其他注册代理执行此操作:@TaW Form1派生自
表单
。如果通过放置
this.Paint+=Form1\u Paint为
Paint
添加事件处理程序
在表单加载中,您将看到只有在OnPaint覆盖中调用了base
OnPaint
方法时才会调用事件处理程序。