Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 41
Текст из файла (страница 41)
C r e a t e ( 0 , 0 , 1 0 0 , 8 0 ) ; // Создаем прямоугольную// область.e.Graphics.FillRectangle(Brushes.Red,My_rect); // Выводим// закрашенный// прямоугольник.e.Graphics.DrawRectangle(Pens.Black,My_Rect);// Выводим// прямоугольный// контур.end;МногоугольникМногоугольник можно нарисовать методом DrawPolygon. При этом вычерчивается контур многоугольника. Инструкция рисования многоугольника выглядит следующим образом:DrawPolygon(My_Pen,M_points);Параметр M_points представляет собой массив из элементов типа P o i n t .Эти элементы являются узловыми вершинами (так же, как и в случае рисованияломаной линии).
Вершина, являющаяся последней в массиве, соединяется спервой вершиной.9-3166ГЛАВА 6 • Изучаем основы работы с графикой в .NETЕсли необходимо нарисовать закрашенный многоугольник, то следуетвоспользоваться методом F i l l P o l y g o n . Инструкция рисования закрашенногомногоугольника выглядит аналогично:FillPolygon(My_Brush,M_points) ;Приведенный ниже в листинге 6.8 фрагмент исходного кода демонстрируетиспользование рассмотренных выше методов DrawPolygon и F i l l P o l y g o n .Листинг 6 . 8 т Использование методов DrawPolygon и F i l l P o l y g o nprocedure TWinForm.TWinForm_Paint(sender: System.Obj e c t ;e: System.Windows.Forms.PaintEventArgs) ;var p t s : a r r a y [1..4] of Point;My_pen:Pen;begin// Задание узловых точек многоугольника.pts[l].X:=10; pts[l].Y:=10;pts[2].X:=50; pts[2].Y:=40;pts[3].X:=40; pts[3].Y:=40;pts[4].X:=30; p t s [4] .Y:=60;// Рисуем закрашенный многоугольник.e.Graphics.FillPolygon(Brushes.Red,pts);// Рисуем его контур.My_pen:=Pen.Create(Color.Blue,2);e.Graphics.DrawPolygon(My_pen,pts);end ;Окружность и эллипсЭллипс можно нарисовать методом D r a w E l l i p s e .
Этот же метод рисует иокружность, которая является частным случаем эллипса. В качестве параметровметода указываются карандаш и прямоугольная область, ограничивающаяфигуру (рис. 6.7):DrawEllipse(My_Pen,xl,yl,х2,у2);ИЛИDrawEllipse(My_Pen,My_Rect);В первом случае область задается координатами углов, расположенных наодной диагонали (см. рис.
6.2, слева), во втором случае для задания прямоугольнойобласти используется структура типа Rectangle (см. рис. 6.7, справа).По аналогии с приведенными выше примерами можно нарисовать закрашенный эллипс. Для этого следует воспользоваться методом F i l l E l l i p s e :Изучаем основные графические примитивы(rect.X1,rect.YI)(X2.Y2)-»• rect.Wightrect. HeightРис.
6 . 7 т Различные способы рисования эллипсаFillEllipse(My_Brush,xl,yl,x2,y2);ИЛИFillEllipse(My_Brush,My_Rect);ДугаДуга представляет собой часть эллипса. Поэтому в методе DrawArc, которыйпозволяет нарисовать дугу, в качестве параметров необходимо дополнительноуказать два угла, определяющих начальную и конечную точку дуги. Инструкциявызова метода DrawArc выглядит следующим образом:DrawArc(My_pen,xl,yl,х2,у2,Anglel,Angle2);. ,Параметры x l , y l , х2, у2 определяют эллипс, частью которого являетсядуга. A n g l e l задает начальную точку дуги, которая является пересечениемэллипса и прямой, проведенной из его центра и образующей угол Anglel сего горизонтальной осью.
Параметр Angle2 задает длину дуги в градусах(рис. 6.8).Рис. 6.8 т Способ задания дугиГЛАВА 6 • Изучаем основы работы с графикой з .NETСледует отметить, что угловые координаты возрастают по часовой стрелке.Так же, как и в описанных выше случаях, в качестве параметров, задающихпрямоугольную область, можно использовать и структуру типа R e c t a n g l e .СекторСектор задается практически тем же способом, что и дуга. Для рисованиясектора необходимо использовать метод DrawPie:DrawPie(My_pen,xl,yl,x2,y2,Anglel,Angle2);Ко всему вышесказанному остается добавить, что для задания прямоугольной области также можно воспользоваться структурой типа R e c t a n g l e ,а для рисования закрашенного сектора - методом F i l l Pie. Параметры методаF i l l P i e аналогичны, за исключением того, что в качестве основы длярисования необходимо использовать-кисть, а не карандаш.Вставка текстаТекст на графическую поверхность можно вставить с помощью метода Drawstring:Drawstring(My_string,_Font,_Brush,x,у);Параметр My_string содержит собственно строку, которую необходимоотобразить.
С помощью параметра _Font задается шрифт текста, а с помощьюпараметра _Brush - цвет текста. Место вывода текста на экране определяетсяпараметрами х и у.В качестве примера использования метода DrawString можно привестифрагмент кода, приведенный в листинге 6.9 (процедура обработки событияPaint).Листинг 6.9 т Использование метода D r a w s t r i n gprocedure TWinForm.TWinForm_Paint(sender: System.Object;e:System.Windows.Forms.PaintEventArgs);begin/ / Использование метода DrawString.e.Graphics.DrawString('Вывод надписи с помощью метода DrawString',self.Font,/ / Шрифт.Brushes.Black,/ / Цвет символов.10,10);/ / Место вывода.end,-Изучает основные графические примитивыWВ приведенном примере для вывода текста используется шрифт, заданныйдля формы приложения (свойство Font формы). Идентификатор S e l fобозначает объект, членом которого является данный метод и используется длядоступа к объекту (к свойствам объекта).Если необходимо вывести текст шрифтом, отличным от шрифта формы, тоон создается самим программистом.
Для этого следует создать объект типаFont, принадлежащий пространству имен System. Drawing:My_font:=System.Drawing.Font.Create(System_Font,Size,FontStyle);Параметр строкового типа System_Font задает шрифт, на основе которогозадается новый. В качестве значения этого параметра можно использоватьназвания шрифтов, зарегистрированных в системе, - A r i a l , Courier, TimesNew Roman и т.д. Параметр S i z e задает размер шрифта, a F o n t S t y l e - стильсимволов шрифта.
Стиль может быть полужирным ( F o n t S y l e . B o l d ) ,курсивом ( F o n t S y l e . I t a l i c ) , подчеркнутым (FontSyle.UnderLine). Еслине указывать параметр F o n t S y l e , то текст будет выведен обычнымначертанием.В листинге 6.10 приведен фрагмент кода (процедура обработки событияP a i n t ) , поясняющий использование дополнительных возможностей методаDrawstring.
Результат выполнения этого кода приведен на рис. 6.9.Листинг 6.10 т Еще один пример использования метода D r a w s t r i n gprocedure TWinForm.TWinForm_Paint(sender: System.Object;e:System.Windows.Forms.PaintEventArgs);var f_noritial:System.Drawing.Font;/ / Обычный шрифт.f_bold:System.Drawing.Font;/ / Полужирный шрифт.f_italic:System.Drawing.Font;.
// Курсив.f_underline:System.Drawing.Font;// Подчеркнутый.begin// Создание шрифтов.f_normal:=System.Drawing.Font.Create('Courier New',12);f_bold:=Systern.Drawing.Font.Create('Courier New',12,FontStyle.Bold);f_italic:=System.Drawing.Font.Create('Courier New',12,FontStyle.Italic);f_underline:=System.Drawing.Font.Create('Courier New',12,FontStyle.Underline);// Используем шрифты для вывода надписей.// Обычный шрифт.ГЛАВА б т Изучаем основы работы с графикой в .МЕТе.Graphics.Drawstring('Вывод надписиF_Normal,Brushes.Black,10,10);/ / Полужирный шрифт.е.Graphics.Drawstring('Вывод надписиF_Bold,Brushes.Black,10,40) ,//.Курсив.е.Graphics.Drawstring('Вывод надписиF_Italic,Brushes.Black,10,70) ;// Подчеркнутый.е.Graphics.Drawstring('Вывод надписиF_Underline,Brushes.Black,10,100);end;ВыводВыводВыводВыводнадписинадписинадписинадписиссссс помощью метода D r a w s t r i n g ' ,/ / Шрифт.// Цвет символов.// Место вывода.с помощью метода D r a w s t r i n g ' ,/ / Шрифт.// Цвет символов.// Место вывода.с помощью метода D r a w s t r i n g ' ,// Шрифт.// Цвет символов.// Место вывода.с помощью метода D r a w s t r i n g ' ,/ / Шрифт.// Цвет символов.// Место вывода.помощью метода Drawstring'понсяцью метода Drawstringпомощью метода Drawstringпомощью метода DrawstringРис.
6.9 т Использование дополнительных возможностей метода D r a w s t r i n gЗнакомимся с основными приемамимультипликацииКартинку, которая находится в графическом файле, проще всего отобразить спомощью компонента PictureBox. Подробное описание компонента, а такжепримеры его использования можно найти в главе 5. Поэтому мы не будемостанавливаться сейчас на основах работы с файлами, а перейдем сразу квозможностям создания эффекта мультипликации.Знакомимся с основными приемами мультипликацииПод мультипликацией обычно понимается изменяющийся рисунок (картинка). Эффект мультипликации достигается за счет перемещения объектов элементов рисунка.Существует два подхода к реализации данного эффекта.В первом случае предполагается создание кадров в процессе работы программы.