如何在C#中绘制简单的图形?

时间:2009-08-19 21:32:34

标签: c# .net graphics directx 2d

我只想在C#中绘制简单的2D对象,如圆形,直线,方形等。我怎么做?回到Turbo C ++时代,我记得初始化一些图形库是为了做同样的事情。我需要在.NET中做类似的事情吗? 3D物体有什么不同吗?像DirectX这样的东西会让这更容易吗?任何指向教程或样本的链接都非常赞赏。

9 个答案:

答案 0 :(得分:21)

正如其他人所说,请查看System.Drawing。 (我只是为了完整性而重复这一点。)System.Drawing将GDI+ Windows绘图库公开给您的应用程序。

可以在C# Corner找到一个很好的教程,让你快速启动System.Drawing和GDI +。

需要注意的一些重要事项:

  1. 许多GDI +对象实现了IDisposable接口,因此应该包含在using块中。确保遵循适当的处置惯例;未能处理GDI +对象可能会导致您的应用程序产生非常令人讨厌的副作用。 (.NET中的GDI +对象对应于它们的基础Windows API等价物。)
  2. 像DirectX这样的API非常复杂,并且有充分的理由。它们的设计不是为了简单的形状,而是为了复杂,高性能和高度交互的多媒体应用。 (换句话说,通常是游戏。)您可以通过Managed DirectX界面访问DirectX,但同样,它可能会因您的直接目的而过度使用。
  3. 如果您对使用DirectX更简单的方法感兴趣,XNA是可行的方法。然而,这是一个特定于游戏的图书馆,并且可能再次过度。我参加聚会有点晚了,但是根据下面的评论,这根本不再支持了。 (这是有道理的;多年来我没有听说过任何关于它的事情。)

答案 1 :(得分:13)

这是一个简单的代码示例,可以帮助您入门(假设您有一个名为pictureBox1的PictureBox):

Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
    g.DrawLine(new Pen(Color.Red), 0, 0, 10, 10);
}
pictureBox1.Image = bmp;

图形对象有很多其他绘图方法,Intellisense会告诉你如何调用它们。

答案 2 :(得分:3)

阅读GDI,GDI +,System.Drawing命名空间,例如here DirectX不是你用来绘制简单形状的东西,而是渲染复杂的3D东西,同样,在C#下使用DX Api有点棘手(尽管不是那么难)。

答案 3 :(得分:1)

答案 4 :(得分:1)

在C#Windows窗体(也是VB.Net)中实现2D图形的最佳方法是通过JavaScript语言使用CefSharp和Canvas API。画布比笨拙的GDI +更好更快

答案 5 :(得分:0)

查看System.Drawing命名空间

答案 6 :(得分:0)

您需要使用GDI +。

如何做到这一点取决于您想要绘制的内容。您可以在控件或表单上绘图,也可以在图像对象上绘图。无论哪种方式,您需要一个System.Drawing.Graphics对象,我相信它位于System.Drawing.dll中。

您可以实例化一个新的Bitmap类并调用Graphics.FromImage(myImage),然后使用刚刚创建的Graphics对象上的方法进行绘制。如果要在窗体或控件上绘制,只需覆盖OnPaint方法并在EventArgs类中查找Graphics属性。

有关System.Drawing命名空间的更多信息,请访问:http://msdn.microsoft.com/en-us/library/system.drawing.aspx

答案 7 :(得分:0)

在.NET中查找托管Direct3D图形API Source

答案 8 :(得分:0)

GDI + 使用System.Drawing