Графические объекты. Класс Graphics




Изображения на форму можно наносить двумя способами. Можно использовать изображения, сохраненные в графических файлах, а можно рисовать линии и другие фигуры программным способом.

Для обеспечения возможности рисования VС++ имеет специальный класс Graphics, расположенный в пространстве имен System::Drawing. Его код и содержит методы для рисования фигур и других лействий с графикой.

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

Рассмотрим пример (Пример программы №2). Пусть необходимо нарисовать на форме отрезок прямой лини синего цвета между точками с координатами (50;20) и (200; 100).

Создайте новый проект. Разместите на форме кнопку с надписью «Нарисовать линию». Напишите такой код функции нажатия на эту кнопку:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)

{Graphics^ Graph;

Graph = this->CreateGraphics();

Graph->DrawLine(Pens::Blue, 50, 20, 200, 100);

}

Сохраните проект и запустите его. Нажмите на кнопку «Нарисовать линию». Должен получиться пример такой результат, как на рисунке.

Изучим эту функцию более подробно.

В первой строке функции объявляется объект класса Graphics:

Graphics ^ Graph;

Далее нужно этот объект создать. Нам уже известно, что объекты могут быть могут быть созданы с помощью ключевого слова gcnew. Однако для объекта класса Graphics необходимо воспользоваться другим способом. У формы и элементов управления есть специальный метод CreateGraphics, при помощи которого каждый элемент управления или форма создает свой собственный объект класса Graphics. Именно поэтому вторая строка нашей процедуры содержит инструкцию

Graph = this-> CreateGraphics ();

Объект c названием Graph создан. Поскольку он создан методом CreateGraphics, принадлежащим форме, он сможет рисовать только на ней.

Теперь можно рисовать. Для этого воспользуется методом DrawLine объект Graph.

Graph-> DrawLine (Pens::Blue, 50, 20, 200, 100);

Четыре числа в качестве последних аргументом метода DrawLine – это координаты двух точек, между которыми проводится отрезок. (Координата (0; 0) – это левый верхний угол формы). А аргумент Pens::Blue определяет цвет линии.

Линии фигур VC++ чертим пером. Существует специальный класс Pens (перья), содержащий несколько десятков перьев разных цветов.

Простейшие графические фигуры

Познакомимся с некоторыми методами класса Graphics.

Метод DrawLine позволяет нарисовать отрезок прямой. Его синтаксис:

Object->DrawLine (pen, x1, y1, x2, y2);

Метод DrawRectangle позволяет нарисовать прямоугольник по положению левого верхнего угла, ширине и высоте. Его синтаксис:

Object->DrawRectangle (pen, x, y, width, height);

Например:

Graph->DrawRectangle(Pens::Black, 10, 10, 100, 50);

Метод DrawEllipse позволяет нарисовать эллипс, вписанный в невидимый прямоугольник заданного размера. Синтаксис метода:

Object->DrawEllipse (pen, x, y, width, height);

Например:

Graph->DrawEllipse(Pens::Aqua, 10, 60, 100, 50);

Вывод надписей

На форме и элементах управления можно не только рисовать, но и писать, то есть изображать на их поверхности текст. Имеются различные возможности для оформления текста и вывода текста в любой точке элемента управления. Текст, также как и линии или кружочки, выводиться методами класса Graphics.

Для вывода текста можно использовать метод DrawString (нарисовать строку):

Объект->DrawString (str, font, brush, x, y);

Первый аргумент представляет собой строку для вывода, второй указывает шрифт выводимой надписи, третий – кисть (объект класса Brushes, содержащий несколько десятков кистей различных цветов), а последние два – коодинаты левого верхнего угла надписи.

Пример программы № 3. Создадим форму с двумя кнопками. В функции обработки нажатия для первой кнопки запишем такой код:

Graphics^ Graph;

Graph = this->CreateGraphics();

Graph->DrawString("Hello All!", button3->Font, Brushes::Blue, 20,50);

А в функции нажатия на вторую кнопку запишем такой код:

Graphics^ Graph;

Graph = button2->CreateGraphics();

Graph->DrawString("Hello All!",button1->Font, Brushes::DarkCyan, 5, 5);

В результате после запуска программы и нажатия кнопок получиться примерно такой результат, как на рисунке.

Другой пример.

int x, y, z;

Graphics^ graph;

graph = this->CreateGraphics();

x = 5; y = 3;

z = x + y;

graph->DrawString("Результат

сложения равен " + Convert::ToString(z),

button2->Font, Brushes::Blue, 20, 50);

Результат работы программы:

 

ОБОРУДОВАНИЕ

Персональный компьютер, опе­рационная система MS Windows 2000 SP4 или XP SP2, интегрированная среда разработки приложений MS Visual Studio.Net 2005 с комплектом документации MSDN 2005, методи­ческие указания к данной лаборатор­ной работе.

ЗАДАНИЕ НА РАБОТУ

1. Проверить работу программ, описанных в примерах №1 – 3.

2. Разработать приложение для построения графика функции y = sin (x), описанное в пункте «Порядок выполнения работы».

3. Изменить приложение для построения графика функции по своему варианту.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: