【发布时间】:2009-08-19 21:32:33
【问题描述】:
我只想在 C# 中绘制简单的 2D 对象,例如圆、线、正方形等。我怎么做?回到 Turbo C++ 时代,我记得初始化一些图形库来做同样的事情。我需要在 .NET 中做类似的事情吗? 3D对象有什么不同吗?像 DirectX 这样的东西会让这更容易吗?非常感谢任何指向教程或示例的链接。
【问题讨论】:
标签: c# .net graphics directx 2d
我只想在 C# 中绘制简单的 2D 对象,例如圆、线、正方形等。我怎么做?回到 Turbo C++ 时代,我记得初始化一些图形库来做同样的事情。我需要在 .NET 中做类似的事情吗? 3D对象有什么不同吗?像 DirectX 这样的东西会让这更容易吗?非常感谢任何指向教程或示例的链接。
【问题讨论】:
标签: c# .net graphics directx 2d
正如其他人所说,请查看System.Drawing。 (为了完整起见,我只是重复一遍。) System.Drawing 将 GDI+ Windows 绘图库公开给您的应用程序。
可以在C# Corner 找到帮助您快速开始使用 System.Drawing 和 GDI+ 的好教程。
需要注意的一些重要事项:
using 块中。确保遵守适当的处置约定;未能释放 GDI+ 对象可能会给您的应用程序带来非常糟糕的副作用。 (.NET 中的 GDI+ 对象对应于它们的底层 Windows API 等效项。)【讨论】:
这是一个简单的代码示例,可以帮助您入门(假设您有一个名为 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 会告诉你如何调用它们。
【讨论】:
了解 GDI、GDI+、System.Drawing 命名空间,例如 here。
DirectX 不是你用来绘制简单形状的东西,而是用来渲染复杂的 3D 东西,而且,在 C# 下使用 DX Api 有点棘手(虽然不是那么难)。
【讨论】:
查看 System.Drawing 命名空间:http://msdn.microsoft.com/en-us/library/system.drawing.aspx
【讨论】:
在 C# Windows 窗体(也包括 VB.Net)中实现 2D 图形的最佳方式是通过 JavaScript 语言使用 CefSharp 和 Canvas API。 Canvas 比笨重的 GDI+ 更好更快
【讨论】:
查看 System.Drawing 命名空间
【讨论】:
在 .NET 中查找 托管 Direct3D 图形 API Source
【讨论】:
您需要使用 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
【讨论】:
GDI+ 使用 System.Drawing
【讨论】: