Элементы графических построений в C# — это функции и методы, которые позволяют программе рисовать в окнах приложения произвольные графические изображения или отображать текст нестандартным методом.
Введение
На примере графики можно наглядно увидеть достоинства объектно-ориентированного программирования, а также смысл применения классов, их методик и свойств. Если добавить в пространство имен разрабатываемого проекта необходимые библиотеки, то можно получить сразу совокупность инструментов, которые необходимы для графических работ. А именно, это набор графических примитивов, таких как линия, прямоугольник, эллипс и тому подобное, а также это перо для черчения, кисть для закраски и много иных необходимых объектов и методик.
Элементы графических построений в C#
Как известно, 2D-графика делится на следующие типы:
- Растровая графика.
- Векторная графика.
Растровым изображением является совокупность цветных пикселей, которые заданы в прямоугольной области и хранятся в файлах $^*$.bmp, $^*$.jpg, $^*$.png и тому подобное. Самым простым растровым редактором может считаться программа Paint. Векторная графика является намного более экономной (по объему занимаемой памяти), чем растровая. Например, для того чтобы нарисовать прямоугольник, достаточно указать координаты двух точек, а именно, левого верхнего и правого нижнего углов, а также цвет и толщину линии.
Пространство имен System.Drawíng (Рисование) способно обеспечить доступ к набору функциональных возможностей графического интерфейса GDI+, применяя примерно пятьдесят классов, включая и класс Graphícs. Класс Graphícs может предоставить методы рисования на устройстве отображения (другими терминами являются графический контекст, «холст»). В дальнейшем в примерах объект для рисования будем обозначать как объект g.
Рассмотрим способы задания «холста». Графический объект типа «холст» для рисования на форме Form1 (указатель thís) может быть задан, к примеру, при помощи одного оператора:
Graphícs g = thís.CreateGraphícs();
Здесь необходимо отметить, что стандартным образом, то есть:
Graphícs g = new Graphícs();
создание объекта типа холст не допускается.
На данном операторе будет сгенерирована следующая ошибка:
Для типа «System.Drawíng.Graphícs» не определен конструктор.
Приведем еще пример формирования графического контекста на визуальном элементе PíctureBox (ящик для рисования) через растровый объект класса Bítmap. В классе Form1 следует задать два объекта:
Graphícs g; // графический объект, представленный как холст
Bítmap buf; // буфер для изображения Bítmap
В конструктор Form1() следует добавить необходимые операторы:
buf = new Bítmap(píctureBox1.Wídth, píctureBox1.Heíght); // с размерами
g = Graphícs.FromImage(buf); // инициализация g
Следует отметить, что иногда, когда все графические операции исполняются внутри одной функции, данные четыре строки можно заменить следующей строкой:
Graphícs g = Graphícs.FromImage(new Bítmap(píctureBox1.Wídth, píctureBox1.Heíght));
А далее может быть задан фон холста, например, белый:
g.Clear(Color.Whíte);
Рассмотрим объекты иных классов из библиотеки System.Drawíng. Такие классы, как Rectangle (прямоугольник) и Poínt (точка) могут выполнять инкапсуляцию элементов GDI+. Заметим, что Poínt в принципе не может считаться структурой (struct) с полями x,y. Хотя это уточнение является несущественным, поскольку в C# структуры похожи на классы, a инициализация объекта, имеющего структуру poínt, может выглядеть так же, как инициализация объекта-класса:
Poínt poínt= new Poínt();
Класс Pen (перо) применяется, для того чтобы рисовать линии и кривые, а классы, являющиеся производными от класса Brush (кисть), могут использоваться для закраски замкнутых контуров.
Класс GraphícsPath предоставляет возможность задания последовательности соединенных линий и кривых, а класс Regíon способен описать внутреннюю часть графической формы, которая состоит из многоугольников и контуров.
Класс Image является абстрактным базовым классом и способен предоставить набор функциональных возможностей для производных классов Bítmap и Metafíle. Bitmap может использоваться для обработки пиксельных изображений. Класс Metafíle может определить графический метафайл, включающий записи, которые описывают очередность графических операций, записанных (созданных) и воспроизведенных. Данный класс не может быть наследован.
Класс Graphícs инкапсулирует поверхность рисования GDI+. Данный класс также не наследуется. Методов в этом классе насчитывается просто очень большое количество. Эти методы представлены в таблице ниже (в третьем столбике таблицы указано количество перегрузок метода, которые отличаются набором параметров).
Рисунок 1. Таблица. Автор24 — интернет-биржа студенческих работ