from itertools import groupby
[ key for key,_ in groupby(sortedList)]
список не должен даже быть , отсортировал , достаточное условие - то, что группируются равные значения.
Редактирование: Я предположил, что "сохранение порядка" подразумевает, что список на самом деле заказан. Если дело обстоит не так, то решением от MizardX является правильное.
Общественное редактирование: Это - однако самый изящный способ "сжать дублирующиеся последовательные элементы в единственный элемент".
Как уже говорили другие, ознакомьтесь с System.Drawing . (Я повторяю это только для полноты картины.) System. Drawing предоставляет вашему приложению библиотеку рисования Windows GDI + .
Хорошее руководство, которое поможет вам начать работу с System.Drawing и GDI +, можно найти на C # Corner .
Некоторые важные моменты, на которые следует обратить внимание:
с использованием блоков
. Обязательно соблюдайте соответствующие правила утилизации; отказ от удаления объектов GDI + может привести к действительно неприятным побочным эффектам для вашего приложения. (Объекты GDI + в .NET соответствуют их базовым эквивалентам Windows API.) Вот простой пример кода, который поможет вам начать работу (предполагается, что у вас есть 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 покажет вам, как позвонить им.
Прочтите о GDI, GDI +, пространстве имен System.Drawing, например здесь .
DirectX - это не то, что вы использовали бы для рисования простых форм, скорее, для рендеринга сложных трехмерных вещей. Кроме того, использование DX Api под C # немного сложнее (хотя и не так сложно).
Проверьте пространство имен System.Drawing: http://msdn.microsoft.com/en-us/library/system.drawing.aspx
Найдите Управляемый графический API Direct3D в .NET. Источник
Вам необходимо использовать 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