Как я тяну простую графику в C#?

from itertools import groupby
[ key for key,_ in groupby(sortedList)]

список не должен даже быть , отсортировал , достаточное условие - то, что группируются равные значения.

Редактирование: Я предположил, что "сохранение порядка" подразумевает, что список на самом деле заказан. Если дело обстоит не так, то решением от MizardX является правильное.

Общественное редактирование: Это - однако самый изящный способ "сжать дублирующиеся последовательные элементы в единственный элемент".

17
задан msvcyc 19 August 2009 в 21:32
поделиться

8 ответов

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

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

Некоторые важные моменты, на которые следует обратить внимание:

  1. Многие объекты GDI + реализуют интерфейс IDisposable и поэтому должны быть заключены в с использованием блоков . Обязательно соблюдайте соответствующие правила утилизации; отказ от удаления объектов GDI + может привести к действительно неприятным побочным эффектам для вашего приложения. (Объекты GDI + в .NET соответствуют их базовым эквивалентам Windows API.)
  2. API, такие как DirectX, чрезвычайно сложны, и не зря. Они предназначены не для простых форм, а для сложных, высокопроизводительных и интерактивных мультимедийных приложений. (Другими словами, игры, как правило. ) Вы можете получить доступ к DirectX через управляемые интерфейсы DirectX, но опять же, это, вероятно, излишек для ваших прямых целей.
  3. Если вас интересует более простой способ работы с DirectX, XNA - это то, что вам нужно. . Тем не менее, это в значительной степени игровая библиотека, и, скорее всего, ее будет слишком много. Я немного опоздал на вечеринку, но, судя по комментариям ниже, это больше не поддерживается. (В этом есть смысл; я ничего не слышал об этом в течение многих лет.)
21
ответ дан 30 November 2019 в 11:32
поделиться

Вот простой пример кода, который поможет вам начать работу (предполагается, что у вас есть 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 покажет вам, как позвонить им.

14
ответ дан 30 November 2019 в 11:32
поделиться

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

3
ответ дан 30 November 2019 в 11:32
поделиться

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

1
ответ дан 30 November 2019 в 11:32
поделиться

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

0
ответ дан 30 November 2019 в 11:32
поделиться

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

0
ответ дан 30 November 2019 в 11:32
поделиться

Вам необходимо использовать 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
ответ дан 30 November 2019 в 11:32
поделиться

GDI + с помощью System.Drawing

0
ответ дан 30 November 2019 в 11:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: