Графические методы

We use cookies. Read the Privacy and Cookie Policy

Графические методы

В предыдущих примерах уже были использованы несколько методов для работы с графикой. Но сейчас следует поговорить о них более подробно. Прежде всего нужно помнить, что для работы с графическими методами необходимо сначала создать объект Graphics. Существует несколько способов получения объекта Graphics, и они будут рассматриваться достаточно подробно

Метод CreateGraphics формы или элемента управления позволяет получить объект Graphics, предоставляющий возможность рисовать на форме или элементе управления. Этот метод демонстрируется в листинге 6.9.

Листинг 6.9

Graphics g = this.CreateGraphics();

Метод FromImage создает новый объект Graphics из заданного объекта Image. При помощи этого метода можно изменять существующее изображение или создавать новое изображение. Причем обработанное изображение можно потом сохранить в графическом файле. Использование метода иллюстрирует код, приведенный в листинге 6.10.

Листинг 6.10

Bitmap bmp = new Bitmap(150, 90);

Graphics g = Graphics.FromImage(bmp);

Метод OnPaint класса Form получает в качестве параметра объект PaintEventArgs. Одним из членов данного объекта является объект Graphics, связанный с формой. Переопределяя метод OnPaint класса Form, можно получить доступ к объекту Graphics из параметра PaintEventArgs, после чего можно работать с графикой в клиентской области формы. Вызов этого метода показан в листинге 6.11.

Листинг 6.11

Protected override void OnPaint(PaintEventArgs e) {

 Graphics g = e.Graphics;

}

Получив любым из перечисленных способов доступ к объекту Graphics, программист может рисовать фигуры, линии, кривые, изображения и текст при помощи различных методов. Самые распространенные графические методы будут рассмотрены в этом разделе главы.

Метод DrawImage рисует заданный объект Image в указанной позиции экрана. Всего существует четыре перегруженные версии метода. Но в самой простой его версии достаточно указать координаты выводимой картинки, как показано в листинге 6.12.

Листинг 6.12

g.DrawImage(myImage, 10, 10);

С помощью метода DrawImage можно выводить на экран не все изображение, а только его часть. В этом случае надо указать размеры прямоугольника, который определяет размеры выводимой области картинки, как показано в листинге 6.13. В примере используется перечисление GraphicsUnit.Pixel, которое позволяет указывать единицы измерения.

Листинг 6.13

Bitmap myBMP = new Bitmap(@"windowsanner.gif");

Rectangle portion = new Rectangle(1, 1, 150, 25);

g.DrawImage(myBMP, 20, 220, portion, GraphicsUnit.Pixel);

Метод FillRectangle уже применялся при рассмотрении кистей. Метод DrawRectangle использует перо вместо кисти, поэтому на экран выводится незакрашенный прямоугольник.

Чтобы нарисовать достаточно сложную фигуру, можно задать массив точек и соединить их прямыми отрезками, после чего можно закрасить получившуюся фигуру. Для этого разработчик может использовать методы DrawPolygon и FillPolygon. В листинге 6.14 приведен код, который позволяет нарисовать простой ромб по указанным точкам.

Листинг 6.14

// Нарисуем ромб

// Зададим массив точек

Point[] arrPoint = {

 new Point(150, 50),

 new Point(200, 100),

 new Point(150, 150),

 new Point(100, 100),

 new Point(150, 50),

};

g.DrawPolygon(bluePen, arrPoint);

Если все рассмотренные ранее методы объединить в одно приложение и затем запустить его, то на экране устройства будет отображено несколько графических образов, как показано на рис. 6.1.

Рис. 6.1. Основные приемы работы с графикой