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