Как нарисовать простую графику в C #? - PullRequest
17 голосов
/ 20 августа 2009

Я просто хочу нарисовать простые 2D-объекты, такие как круг, линия, квадрат и т. Д. В C #. Как я могу это сделать? В дни Turbo C ++ я помню инициализацию некоторой графической библиотеки для того же. Нужно ли делать что-то подобное в .NET? Отличается ли это от 3D-объектов? Будут ли такие вещи, как DirectX, сделать это легче? Любые ссылки на учебники или образцы приветствуются.

Ответы [ 8 ]

21 голосов
/ 20 августа 2009

Как уже говорили другие, проверьте System.Drawing . (Я повторяю это только для полноты.) System.Drawing предоставляет в ваше приложение библиотеку рисования Windows GDI + .

Хороший учебник, с которого можно начать работу с System.Drawing и GDI +, можно найти по адресу C # Corner .

Некоторые важные пункты для заметки:

  1. Многие объекты GDI + реализуют интерфейс IDisposable и поэтому должны быть заключены в блоки using. Обязательно соблюдайте соответствующие правила утилизации; невозможность утилизировать объекты GDI + может привести к очень неприятным побочным эффектам для вашего приложения. (Объекты GDI + в .NET соответствуют базовым эквивалентам Windows API.)
  2. API, такие как DirectX, чрезвычайно сложны, и на то есть веские причины. Они предназначены не для простых форм, а для сложных, высокопроизводительных и высокоинтерактивных мультимедийных приложений. (Другими словами, игры, как правило.) Вы можете получить доступ к DirectX через интерфейсы Managed DirectX, но опять же, это, вероятно, излишне для ваших прямых целей.
  3. Если вы заинтересованы в более простом способе работы с DirectX, лучше всего использовать XNA . Тем не менее, это в значительной степени игровая библиотека, и, скорее всего, это будет слишком. Я немного опоздал на вечеринку, но, согласно комментариям ниже, это больше не поддерживается вообще. (Это имеет смысл; я ничего об этом не слышал много лет.)
13 голосов
/ 20 августа 2009

Вот простой пример кода, который поможет вам начать работу (предполагается, что у вас есть PictureBox с именем pictureBox1):

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 покажет вам, как их вызывать.

3 голосов
/ 20 августа 2009

Прочитайте о GDI, GDI +, пространстве имен System.Drawing, например здесь .
DirectX - это не то, что вы бы использовали для рисования простых фигур, а для рендеринга сложных 3D-объектов, также использование DX Api в C # немного сложнее (хотя и не так сложно).

1 голос
/ 20 августа 2009

Проверьте пространство имен System.Drawing: http://msdn.microsoft.com/en-us/library/system.drawing.aspx

0 голосов
/ 16 сентября 2009

GDI + используя System.Drawing

0 голосов
/ 20 августа 2009

Ищите Управляемый графический API Direct3D в .NET Источник

0 голосов
/ 20 августа 2009

Вам нужно использовать GDI +.

То, как вы это делаете, немного зависит от того, на чем вы хотите рисовать. Вы можете рисовать на элементе управления или форме, или вы можете рисовать на объекте изображения. В любом случае вам нужен объект System.Drawing.Graphics, который, как я считаю, находится в System.Drawing.dll.

Вы можете создать новый класс Bitmap и вызвать Graphics.FromImage (myImage), а затем рисовать, используя методы только что созданного объекта Graphics. Если вы хотите рисовать на форме или элементе управления, просто переопределите метод OnPaint и найдите свойство Graphics в классе EventArgs.

Дополнительная информация о пространстве имен System.Drawing здесь: http://msdn.microsoft.com/en-us/library/system.drawing.aspx

0 голосов
/ 20 августа 2009

Посмотрите на пространство имен System.Drawing

...