Обобщённое программирование в C#. Анимация объектов в диалоговых Windows-приложения. Способы создания
Учреждение образования
«Белорусский государственный педагогический университет
имени Максима Танка»
Математический факультет
Кафедра прикладной математики и информатики
Курсовая работа
Обобщённое программирование в C#. Анимация объектов в диалоговых Windows-приложения. Способы создания
студентки 3-го курса
математического факультета
Авсюкевич Анны Викторовны
Научный руководитель
Нарейко Нина Николаевна
Защищена «__» ________2011 г.
с оценкой «____________»
Минск, 2011
ОГЛАВЛЕНИЕ
Введение…………………………………………………………
Глава1. Принципы работы с графикой средствами GDI+
1.1 Пространство имён GDI+ …………………………………...…4
1.2 Пространство имен System.Drawing ………………………......5
1.3 Служебные типы System.Drawing …………………………......6
1.4 Возможности класса Graphics ……………………………….....7
1.5 Обзор пространства имен System. Drawing. Drawing2D …..9
1.6. Вывод изображений …………………………………………..10
Глава 2. Способы создания анимации объектов
2.1 Метод перемещения …………………………………11
2.2 Таймер ...……………………………………………...13
Глава3. Практическая работа «Часики» ………………………..14
Заключение …………………………………………………27
Литература ………………………………………………….28
26
Введение
Приложения с графикой, игры, Computer Aided Design/Computer Aided Manufacture (CAD/CAM — проектирование/производство с помощью компьютера), программы для рисования, для создания графиков и многие другие типы приложений требуют от разработчиков написания кода для работы с графикой. Использование создаваемых пользователем управляющих элементов также предполагает работу с графикой. Посредством своей последней библиотеки классов компания Microsoft сделала написание кода для работы с графикой как никогда простым. Для рисования объектов в Windows Forms приложениях язык С# содержит очень богатый набор методов. Пространство имен Drawing содержит множество объектов, которые облегчают программисту работус графикой. Специально для .NET платформы разработчики Microsoft разработали GDI+ библиотеку, значительно повысив возможности GDI (Graphic Device Interface). GDI+ включает возможности рисования простейших объектов (линии, эллипсы...), рисование различных объектов 2D графики, отображение файлов различных графических форматов (bmp, jpeg, gif, wmf, ico, tiff...) и многое другое.
При написании графического кода следует всегда помнить, что Microsoft Windows не запоминает, каким образом выглядит данное графическое окно, если оно заслоняется другими окнами. Если закрытое ранее окно оказывается на переднем плане и становится видимым, то система Windows сообщает приложению, что окно (или некоторая его часть) становится видимым и его можно нарисовать. На приложение возлагается только задача рисования содержимого окна. Вывод границ окна, линейки с заголовком и прочих графических составляющих самого окна система Windows берет на себя. При создании окна, в котором мы собираемся что-либо нарисовать, следует либо объявить класс, который является производным от System.windows.Forms.Form, либо, если мы создаем собственный управляющий элемент, объявить класс, который является производным от System.windows.Form.userContro
Задача моей курсовой работы — научиться работать с выводом на форму графики (изображения и текста). Я начну с обзора многочисленных пространств имен, предназначенных для работы с графикой в .NET. Мы узнаем, как инициировать сеансы вывода графики и как реагировать на эти сеансы в приложении. Кроме того, мы рассмотрим многочисленные возможности объекта Graphics и приемы работы с ним. При этом нам не обойтись без знакомства с такими типами, как Brush, Pen, Color, Point(а также множеством других).
Глава1. Принципы работы с графикой средствами GDI+
1.1 Пространство имён GDI+
GDI расшифровывается как Graphic Device Interface (интерфейс графических устройств). Этим словом обозначается подсистема Windows, предназначенная для вывода графических изображений (a Windows вся основана на использовании графики) на экран и на принтер. GDI+ — это новый набор программных интерфейсов, используемый в .NET.
В .NET предусмотрено множество пространств имен, предназначенных для вывода двумерных графических изображений. Помимо ожидаемых стандартных типов (например, для работы с цветом, со шрифтами, с пером и кистью, с изображениями) в этих пространствах имён предусмотрены типы для выполнения достаточно изощренных операций, таких как геометрические преобразования, сглаживание неровностей, подготовка палитры, поддержка вывода на принтер и многие другие. Перечень наиболее важных пространств имен для работы с графическими изображениями представлен в табл.1.
Таблица 1. Наиболее важные пространства имен GDI+
Пространство имен | Специализация |
System.Drawing | важнейшее пространство имен GDI+, которое содержит основные типы для вывода графики (для работы со шрифтами, перьями, кистью и т. п.), а также исключительно важный тип Graphics |
System,Drawing,Drawing2D | В этом пространстве имен предусмотрены типы для выполнения более сложных операций с двумерной графикой (градиентная заливка, геометрические преобразования и т. п.) |
System.Drawing.Imaging | Здесь определены типы, которые позволяют напрямую работать с графическими изображениями (менять палитру, извлекать метаданные изображений, выполнять операции с метафайлами и т. п.) |
System.Drawing.Text | Это пространство имен позволяет работать с системными шрифтами. Например, тип FontColiection позволяет получать список всех установленных в системе и шрифтов |
Чтобы обеспечить возможность работы с графикой в приложении, необходимо добавить в него ссылку на сборку System.Drawing.dll. Если мы воспользуемся шаблоном Windows Application, то эта ссылка будет добавлена автоматически. После этого нам необходимо добавить в список используемых пространств имен строку
using System.Drawing;
и можно приступать к работе с графикой.
1.2 Пространство имен System.Drawing
Подавляющее большинство типов для работы с графикой, которые мне потребуются, находятся именно в пространстве имен System.Drawing. Некоторые наиболее важные типы этого пространства имён представлены в табл.2.
Таблица 2, Типы пространства имен System.Drawing
Тип | Назначение |
Bitmap | Инкапсулирует файл изображения и определяет набор методов для выполнения различных операций с этим изображением |
Brush Brushes SolidBrush SystemBrushes TextureBrush | Объекты Brush (кисть) используются для заполнения пространства внутри геометрических фигур (например, прямоугольников, эллипсов или многоугольников). Тип Brush — это абстрактный базовый класс, остальные типы являются производными от Brush и определяют разные наборы возможностей. Дополнительные типы Brush определены в пространстве именSystem. Drawing. Drawing2D |
Graphics | Этот важнейший класс определяет набор методов для вывода текста, изображений и геометрических фигур. Можно считать этот тип эквивалентом типа НОС в Win32 |
Image ImageAnimator | Imagе - это абстрактный базовый класс, который обеспечивает возможности типов Bitmap, Icon и Cursor. ImageAnimator позволяет производить показ изображений (типов, производных от Image) через указанные вами интервалы времени |
Pen Pens SystemPens | Pen (перо) — это класс, при помощи которого можно рисовать прямые и кривые линии. В классе Реп определен набор статических свойств, при помощи которых можно получить объект Реn с заданными свойствами (например, с установленным цветом) |
Point PointF | Эти структуры обеспечивают работу с координатами точки. Point работает со значениями типа int, a PointF — со значениями типа float |
Region | Определяет область, занятую геометрической фигурой |
1.3 Служебные типы System.Drawing
Многие методы, определенные в классе Graphic, требуют, чтобы мы указали положение или область для вывода графического объекта. Например, при использовании метода DrawString() необходимо указать местонахождение выводимой текстовой строки на элементе управления. Метод DrawString() многократно перегружен, но один из наиболее часто используемых вариантов требует указания координат (х, у) или прямоугольной области для вывода. Другим часто используемым методам необходимо передавать размеры (высоту и ширину) прямоугольной области, в которую будет производиться вывод, или, если область вывода будет не прямоугольной, задать эту область другим способом.
Для передачи методам подобной информации в пространстве имен System. Drawing предусмотрены типы Point, Rectangle, Region и Size. Point используется для передачи координат (х, у). Rectangle определяет координаты двух точек, которые будут восприняты как верхний левый и нижний правый углы прямоугольника. Тип Size определяет размер прямоугольной области в каком-либо измерении (то есть используется для указания высоты или ширины). Тип Region необходим для работы с непрямоугольными областями.
Внутренние переменные, используемые для хранения данных в Point, Rectangle и Size, являются целочисленными (то есть относятся к типу int). Если же у нас возникла необходимость указывать координаты или размеры при помощи значений с плавающей запятой (тип float), то в нашем распоряжении типы PointF, RectangleF и SizeF. Они, как несложно догадаться, отличаются лишь форматом внутренних переменных (fIoat вместо int). Наборы членов у них полностью одинаковы.
Тип Point(F)
Первый служебный тип, который я рассмотрю, - тип System. Drawing. Point (F). Наиболее важные члены этого класса представлены в табл. 3.
Несмотря на то что этот тип чаще всего используется в приложениях GDI+ с графическим пользовательским интерфейсом, его вполне можно использовать в приложениях любого типа.
Таблица 3. Члены типа Point (PointF)
Член | Назначение |
+ - = != | Перегруженные операторы для выполнения различных действий с координатами х и у
|
Х y | Эти свойства позволяют получать и устанавливать значения координат х и у |
IsEmpty | Это свойство возвращает true, если значения х и у равны нулю |
Offset() | Этот метод позволяет произвести смещение точки относительно исходной позиции |
Тип Size(F)
Типы Size и SIzeF очень просты в применении и практически не требуют комментариев. Эти структуры обеспечивают работу с размерами. Краткий перечень членов этих типов представлен в табл. 4.
Таблица 4. Члены типов Size и SizeF
Член | Назначение |
+ - = != | Перегруженные операторы
|
Height Width
| Эти свойства определяют высоту и ширину — два размера, с которыми работает Size(F)
|
1.4 Возможности класса Graphics
Мы уже знаем, как можно получить объект Graphics в различных ситуациях. Следующее, что мне нужно сделать, — научиться в полной мере использовать его возможности. Все возможности вывода изображений в GDI+ сосредоточены именно в этом классе. Можно считать этот класс неким виртуальным устройством, на которое производится вывод графики. В Graphics определено очень большое количество методов для вывода текста, изображений, геометрических фигур и т. п. Наиболее часто используемые методы этого класса представлены в табл.5.
Таблица 5. Некоторые методы класса Graphics
Метод | Назначение |
FromHdc() FromHwnd() Fromlmage() | Эти статические методы обеспечивают возможность получения объекта Graphics из элемента управления или изображения |
Clear() | Заполняет объект Graphics выбранным пользователем цветом, удаляя его предыдущее содержимое |
DrawArc() DrawBezler() DrawBeziers() DrawCurve() DrawEllipse() DrawIcon() DrawLine() DrawString() | Эти методы (как и многие другие) предназначены для вывода изображенийи геометрических фигур
|
FillElllpse() FillPath() FillPie() FillPolygon() FillRectangle() | Эти методы предназначены для заполнения внутренних областей графических объектов |
В классе Graphics также определен набор свойств, при помощи которых можно настраивать параметры графических объектов. Наиболее важные свойства представлены в табл.6.
Таблица 6. Свойства класса Graphics
Свойство | Назначение |
Clip Graphics ClipBounds VisibleClipBounds IsClipEmpty IsVisibleClipEmpty | Эти свойства позволяют настроить параметры отсечения для объекта |
Transform | Для проведения преобразований координат |
PageUnit PageScale DpiX DpiY | Эти свойства позволяют задать «место происхождения» операции вывода графического объекта и единиц измерения
|
SmoothingMode PixelOffsetMode TextRenderingHint | Позволяют задать плавность переходов для геометрических объектов и текста. Устанавливаются при помощи значений из соответствующих перечислений, определенных в пространствах имен System.Drawing и System.Drawing2D |
Compositing Mode CompositingQuality | Свойство Com positing Mode определяет, будет ли выводимый графический объект выводиться над фоном или будет происходить смешение с фоном. Используются значения из перечисления CompositingMode, определенном в пространстве имен System.Drawing2D. CompositingQuality определяет параметры процесса смешивания. Для него используются значения из перечисления CompositingQuality, также определенном в пространстве имен System.Drawing2D |
InterpolationMode | Определяет интерполяцию между конечными точками. Используются значения из соответствующего перечисления |
1.5 Обзор пространства имен System. Drawing. Drawing2D
Я уже рассмотрела в своей работе типы Реп (перо) и Brush (кисть). Самые простые варианты этих типов (которыми мы обычно и обходились) определены в пространстве имен System. Drawing. Однако есть гораздо более интересные перья и кисти, и для их использования (так же как и множества других возможностей) нам необходимо обратиться к пространству имен System. Огаing.Drawlng2D.
Это дополнительное пространство имен GDI+ (со значительно меньшим количеством типов, чем System.Drawing) обеспечивает возможность устанавливать специальные «наконечники» для перьев (pen caps), создавать кисти, которые рисуют не сплошной полосой, а текстурами, производить различные векторные манипуляции с графическими объектами. Некоторые наиболее интересные типы этогопространства имен представлены в табл.7.
Классы System.Drawing.Drawing2D
Класс | Назначение |
AdjustableArrowCap CustomLJneCap | Определяют «наконечники» для перьев. В результате исходная точка и конец линии получают характерные завершения. Можно использовать выбранный пользователем вариант: или стрелки на конце линии (AdjustableArrowCap), или полностью определенное им самим завершение (Custom LineCap) |
Blend ColorBlend | Используются для смешивания цветов. Обычно используются вместе с LinearGradientBrush |
GraphicsPath GraphicsPath Iterator | Объект GraphicsPath представляет набор связанных линий (прямых и кривых). В данный объект можно поместить практически любой тип геометрической фигуры (например, дуги, прямоугольники, отрезки прямой линии, многоугольники и т. п.) |
PathData | Хранит графические данные для GraphicsPath |
HatchBrush LinearGradientBrush PathGradientBrush | Экзотические типы кистей |
Для этих типов используются значения из перечислений, также определенных в пространстве имен System. Drawl rig. Drawi ng2D. Эти перечисления представлены в табл.8.
Перечисления System.Drawing.Drawing2D
Перечисление | Назначение |
DashStyle | Определяет стиль штриховых линий для пера |
FillMode | Определяет заполнение внутренней области геометрической фигуры |
HatchStyle | Определяет варианты штриховки (для объектов HatchBrush) |
LinearGradientMode | Определяет направление градиентного изменения цвета |
LineCap | Определяет стиль «наконечника» пера |
PenAlignment | Определяет ориентацию пера относительно проводимой им линии |
РепТуре | Определяет тип линии, создаваемой пером |
QualityMode SmoothingMode | Определяют качество вывода графического объекта
|

- Обобщенный анализ: проектирование и расчет, - функциональных узлов аппаратуры передачи данных (АПД): Устройство преобразования сигналов (У
- Обобщённый анализ финансового состояния фирмы
- Обов'язкоае медичне страхування
- Обов’язкова участь захисника та момент його вступу до справи
- Обогащение лексического запаса младших школьников при изучении имени прилагательного
- Обогащение полезных ископаемых
- Обогащение словарного запаса дошкольников с ОНР
- Обобщение педагогического опыта по проблеме исследования
- Обобщение педагогического опыта работы в процессе реабилитации неблагополучных в условиях социального патронажа
- Обобщение результатов аудита материально-производственных запасов
- Обобщенная диаграмма превращения переохлажденного аустенита в углеродистой стали
- Обобщенная методика проектирования организационных структур систем управления
- Обобщённая оценка предприятий и результатов их деятельности в Тюмени и Тюменской области
- Обобщенная оценка финансовых результатов и финансового состояния предприятия