Готовый перевод Practical C# Charts and Graphics (Jack Xu, 2007) / Практический C# диаграм и графиков.: C# Graphics Basics/Основы графики С#

Visual C # предоставляет все необходимые инструменты для создания любых типов графиков и диаграмм. Он обеспечивает
 GDI + библиотеки классов интерфейса, который позволяет пользователям рисовать различные графические объекты, включая текст,
 линии, прямоугольники, окружности, эллипсы, многоугольники и множество других графических фигур. Эта глава
 начинается с описания графических систем координат, используемых в Visual C #, и показывает несколько
 разных системах координат, которые можно использовать, чтобы сделать программирование графики легче. Затем
 обсудим два основных графических объектов, перья(Pen) и кисти(Brush), которые используются для рисования основных графических форм и
  заливки поверхностей узорами, цветом, или растровыми изображений. Рассмотрим, как использовать перо(Pen) и
 кисть(Brush) для создания основных графических форм. И, наконец, объясним цветовые системы, используемой в C # и
 обсудим, как определить пользовательскую карту цвета и тени.

Системы координат.
При создании графического объекта нужно определить, где именно этот графический объект или рисунок будет отображаться. Для этого необходимо понимать, как в Visual С# измеряются координаты графического объекта. Каждая точка на форме или на элементе управления имеет координаты X и Y.
В следующих разделах рассматриваются различные системы координат и их связь между собой.

Базовые координаты.
Visual C# и графическая библиотека GDI+ позволяют работать с тремя базовыми системами координат в двумерном пространстве: глобальной, страничной и аппаратной. Глобальные координаты моделируют конкретную графическую среду, именно они передаются в качестве параметров методам в С#. Под страничными координатами понимают систему координат поверхности рисования, такой как поверхность формы или элемента управления. Аппаратные координаты – это координаты, используемые физическими устройствами, на которых осуществляется отрисовка, например на экране или листе бумаги. Если попросить C# нарисовать линию от точки (x1,y1) до точки (x2,y2), то координаты этих точек будут отсчитываться в глобальной системе координат.

Единицы измерения, используемые для измерения расстояния в глобальной системе координат можно определять в зависимости от конкретного приложения. Необходимо заметить, что невозможно нарисовать графическую фигуру в глобальной системе координат непосредственно на мониторе компьютера. Перед отрисовкой графического объекта на мониторе, координаты должны подвергнутся ряду преобразований. Одно преобразование, называемое глобальным, переводит глобальные координаты в страничное, а другое, называемое страничным преобразованием, переводит страничные координаты в аппаратные.
По умолчанию, начало координат всех трех систем находится в точке (0,0), в левом верхнем углу области рисования.Координата X представляет собой расстояние от левого края области рисования до до точки, а координата Y - расстояние от верхнего края до точки. На Рисунке 1-1 показано соотношение между координатами X и Y точки и областью рисования.

Базовой единицей измерения для всех трех систем координат являются пикселы. Систему координат можно настроить, изменив положение начала координат, и установив другую единицу измерения.

Рассмотрим на примере, как этого можно добиться.
Запустите Microsoft Visual Studio .NET и выберите File | New | Project, чтобы создать новый проект Windows Application на C#.
Назовите проект Example1_1.
Теперь в интегрированной среде разработки (IDE) Visual Studio .NET создалась Windows-форма под названием Form1.
Нам нужно, чтобы Form1 имела собственную функцию перерисовки. Этого можно добиться путем переопределения метода OnPaint формы Form1.
Сначала нарисуем линию от точки Point(0,0) до точки Point(1,1), причем единицами измерения будут дюймы.
В следующем листинге Form1.cs показано, как это сделать:

Результат показан на Рисунке 1-2.
Из листинга класса Form1 видно, что свойство PageUnit было установлено в GraphicsUnit.Inch, тем самым единицами измерения стали дюймы. Затем создается объект Pen, и его ширина устанавливается в 1/g.DpiX. Свойство DpiX класса Graphics обозначает горизонтальное расширение (в точках на дюйм), поддерживаемое объектом Graphics. Установить это свойство необходимо, поскольку текущие настройки PageUnit повлияют на то, как будет рисовать перо. Так что перо шириной в выбранную единицу измерения будет рисовать линию толщиной в один пиксел, один миллиметр, одну точку, один дюйм или одну 1300ую дюйма в зависимости от установок объекта Grapics. Поэтому, если ширина пера не установлена подобным образом, то будет нарисована линия толщиной в один дюйм.
Далее нарисуем линию в одну единицу измерения, которая, в этом случае, будет длиной в один дюйм. Заметим также, что свойство ControlStyles.ResizeRedraw в конструкторе Form1 установлено в true, что гарантирует перерисовку содержимого формы при изменении ее размеров.

Теперь переместим начало координат в центр рабочей области и снова нарисуем линию. Это можно сделать, изменив метод OnPaint в примере Example1_1 как показано ниже:

Переведено на Нотабеноиде
http://notabenoid.org/book/23806/78775

Переводчики: Ivan_89, Tekora

Настройки

Готово:

57.14% КП = 1.0

Непереведённые фрагменты будут пропущены.