Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Введение в программирование на языке Visual C#

СОЗДАНИЕ ЗАСТАВОК К ПРОЕКТАМ

Графическое ядро GDI+ (Graphics Device Interface — интерфейс графических устройств) представляет собой собрание классов, ответственных за создание графики.

Связанные с библиотекой GDI+ классы определены в следующих пространствах имен:

- System.Drawing — предоставляет такие графические классы, как Pen, Image, Font, Brushes, Region, Bitmap и т.д.;

- System.Drawing.Drawing2D — предоставляет дополнительные классы плоской графики и векторной графики, такие как LinearGradientBrush и Matrix; System.Drawing.Imaging — предоставляет дополнительные классы для работы с изображениями;

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

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

Доступ к графической поверхности объекта можно реализовать через обработку события Paint, воспользовавшись параметром е, свойство Graphics которого представляет собой графическую поверхность объекта. В примере, представленном в листинге 217, таким способом осуществляется вывод строки «Программируем на С#» на форму. Вывод текста на графическую поверхность осуществляется с помощью метода DrawString() (табл. 28).

В GDI+ начало координат (0,0) соответствует левому верхнему углу, причем единицей измерения является пиксель. Увеличивая количество пикселей по оси X, мы смещаем точку вправо, а увеличивая количество пикселей по оси Y, мы смещаем точку вниз.

Листинг 217

namespace WindowsApplicationl {

public partial class Forml : Form {

public Forml()

{

InitializeComponent() ;

}

private void Forml_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

g.Drawstring("Программируем на C#",new Font ("Times New Roman",24),Brushes.Red,20,20) ;

}

}

}

Результат работы листинга 217 представлен на рис. 242.

Работа с графикой

ЕЖИ

Программируем на C#

Рис. 242. Осуществлен вывод текста на графическую поверхность

В некоторых случаях может потребоваться доступ к объекту Graphics, но не через создание обработчика Paint. Предположим, нам нужно, чтобы строка «Программируем на С#» выводилась на форму при нажатии на кнопку buttonl. В листинге 218 приведен код процедуры, отвечающий за указанные действия. Метод FromHwnd(), где Hwnd — Handle to a window, используемый в программе, является структурой данных, представляющей окно, Handle трактуется как управление, контролирование чего-либо.

Метод Dispose(), который служит для освобождения внутренних ресурсов, лучше использовать тогда, когда вы создавали объект Graphics явно (как в листинге 218). В листинге 217 мы не создавали данный объект непосредственно, а использовали его через входной параметр PaintEventArgs.

Листинг 218

namespace WindowsApplicationl {

public partial class Forml : Form {

public Forml()

{

InitializeComponent() ;

}

private void buttonl_Click(object sender, EventArgs e)

{

Graphics g = Graphics.FromHwnd(this.Handle); g.Drawstring("Программируем на C#", new Font("Times New Roman", 24), Brushes.Red, 20, 20);

g.Dispose();

}

}

}

В табл. 28 представлены основные методы создания графических примитивов и примеры их создания.

Таблица 28. Основные методы создания графических примитивов

Метод

Описание метода, пример

DrawLine (Pen,xl,yl,x2,y2)

Рисование линии. Параметры xl,yl,x2,y2 определяют координаты начальной и конечной точек линии.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

Pen pn = new Pen(Color.Black, 3); g.DrawLine(pn, 20, 20, 150, 20);

}

DrawRectangle

(Pen,xl,yl,x2,y2)

Рисование прямоугольника. Параметры xl,yl,x2,y2 определяют координаты находящихся на одной диагонали углов прямоугольника.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

Pen pn = new Pen(Color.Black, 3); g.DrawRectangle(pn, 20, 20, 150, 20);

}

DrawEllipse (Pen,xl,yl,x2,y2)

Рисование эллипса. Параметры xl,yl,x2,y2 определяют координаты диагональных углов области, внутри которой вычерчивается эллипс.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

Pen pn = new Pen(Color.Black, 3);

//Цвет карандаша

g.DrawEllipse(pn, 20, 20, 150, 50);

}

Draw Arc (Pen,xl,yl,x2,y2, ugol 1, ugol2)

Рисование дуги. Параметры xl,yl,x2,y2 определяют координаты диагональных углов области, внутри которой вы-черчивается эллипс. Параметры ugoll — начальный угол,

ugol2 — длина дуги в градусах.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

Pen pn = new Pen(Color.Black, 3); g.DrawArc(pn, 20, 20, 360,

190,180,180);

}

DrawPie (Pen,xl,yl,x2,y2, ugoll, ugo!2)

Рисование сектора. Параметры xl,yl,x2,y2 определяют координаты диагональных углов области, внутри которой вы-черчивается эллипс. Параметры ugoll — начальный угол, ugol2 — длина дуги окружности, формирующий сектор, в градусах.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

Pen pn = new Pen(Color.Black, 3); g.DrawPie(pn, 20, 20, 360, 190,180,40);

}

DrawString (stroka, Font, Brush, x, y)

Вывод строки текста. Параметр Font определяет шрифт тек-ста, Brush — цвет символов, параметры х, у — координаты

точки, от которой выводится текст.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

Brush br = new SolidBrush(Color.Blue); g.DrawString("Лабораторная работа", new Font("Times New Roman", 24), br, 20, 20);

}

Drawlmage (image, x, y)

Вывод изображения. Параметр image определяет выводи-мое изображение, параметры х, у — координаты точки, от которой выводится изображение.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Image

my_Image=Image.FromFile(@"C:1.jpg");

Graphics g = e.Graphics; g.Drawlmage(my_Image, new Point(10,

10) ) ;

}

FillRec tangle (Brush,x 1 ,y 1 ,x2,y2)

Рисование закрашенного прямоугольника.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

Brush br = new SolidBrush(Color.Blue); g.FillRectangle(br, 20, 20, 160, 90);

}

FillEllipse (Brush,xl,yl,x2,y2)

Рисование закрашенного эллипса.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

Brush br = new SolidBrush(Color.Blue); g.FillEllipse(br, 20, 20, 360, 190);

}

FillPie (Brush,xl,yl,x2,y2, ugol 1, ugol2)

Рисование закрашенного сектора.

private void Forml_Paint(object sender,

PaintEventArgs e)

{

Graphics g = e.Graphics;

Brush br = new SolidBrush(Color.Blue); g.FillPie(br, 20, 20, 360, 190,180,40);

}

Создание графических заставок к проектам позволит познакомиться с большинством из базовых типов пространства имен System.Drawing, комментарии, содержащиеся в листингах, помогут уяснить ряд программных подходов, используемых при визуализации графических данных.

 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
 
Популярные страницы