Введение в среду визуального программирования Delphi. Часть 2
Покупка
Новинка
Тематика:
Программирование в среде Delphi
Авторы:
Борисов Станислав Васильевич, Комалов Сергей Сергеевич, Серебрякова Ирина Леонидовна, Степанова Ирина Ивановна, Пащенко Олег Борисович
Под ред.:
Трусов Борис Георгиевич
Год издания: 2006
Кол-во страниц: 96
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
Артикул: 842053.01.99
Работа посвящена созданию графических приложений в рамках визуальной среды Delphi. Каждый раздел содержит краткие информационные сведения, постановку задачи, описание средств ее реализации, код и комментарии к нему. Для студентов 1-го курса МГТУ им. Н.Э. Баумана, изучающих общеуниверситетскую дисциплину «Информатика».
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ имени Н.Э. БАУМАНА ВВЕДЕНИЕ В СРЕДУ ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ DELPHI Часть 2 Методические указания Под редакцией Б.Г. Трусова М о с к в а Издательство МГТУ им. Н.Э. Баумана 2 0 0 6
УДК 681.3.06 ББК 32.97 В24 Рецензент В.М. Недашковский В24 Введение в среду визуального программирования Delphi: Метод. указания. – Ч. 2. / С.В. Борисов, С.С. Комалов, И.Л. Серебрякова и др.; Под. ред. Б.Г. Трусова. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2006. – 96 с. Работа посвящена созданию графических приложений в рамках визуальной среды Delphi. Каждый раздел содержит краткие информационные сведения, постановку задачи, описание средств ее реализации, код и комментарии к нему. Для студентов 1-го курса МГТУ им. Н.Э. Баумана, изучающих общеуниверситетскую дисциплину «Информатика». Ил. 24. Табл. 14. Библиогр. 3 назв. УДК 681.3.06 ББК 32.97 Методическое издание Станислав Васильевич Борисов Сергей Сергеевич Комалов Ирина Леонидовна Серебрякова Ирина Ивановна Степанова Олег Борисович Пащенко Введение в среду визуального программирования Delphi Часть 2 Редактор А.В. Сахарова Корректор Л.И. Малютина Компьютерная верстка А.Ю. Ураловой Подписано в печать 30.11.2006. Формат 60×84/16. Бумага офсетная. Печ. л. 6,0. Усл. печ. л. 5,58. Уч.-изд. л. 5,25. Тираж 100 экз. Изд. № 40. Заказ Издательство МГТУ им. Н.Э. Баумана. 105005, Москва, 2-я Бауманская ул., 5 МГТУ им. Н.Э. Баумана, 2006
ПРЕДИСЛОВИЕ Развитие вычислительной техники и технологии программирования привело к разработке принципиально нового программного продукта – Delphi, в котором для кодирования программ используется разработанный фирмой Borland язык Object Pascal, хорошо согласуемый с другими средствами программирования, такими как Pascal и С. Представленная работа посвящена созданию графических приложений в рамках визуальной среды и ориентирована на начинающих программистов. Очевидно, что в небольшом по объему издании невозможно рассмотреть все вопросы, связанные с программированием на Object Pascal в Delphi. Многие темы, например работа с текстовыми файлами, создание Интернет-приложений, задачи динамического обмена данными между приложениями и другие, остались за рамками изложения. Представлено достаточное количество наглядных примеров, позволяющих легко разобраться с особенностями программирования реальных задач. Каждый раздел содержит краткие информационные сведения, постановку задачи, описание необходимых для ее реализации средств, соответствующего кода и комментариев к нему. Данные методические указания могут послужить дополнительным вспомогательным материалом при самостоятельном освоении графических возможностей среды Delphi и могут быть адресованы студентам МГТУ, изучающим общеуниверситетскую дисциплину «Информатика» на 1-м курсе обучения. 3
1. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ DELPHI Среда визуального программирования предоставляет пользователю возможность разрабатывать приложения, которые могут выводить графику: схемы, чертежи, графики, текст, рисунки и иллюстрации. (Основным источником информации о компонентах и связанных с ними свойствах и методах является Help Delphi, можно также обратиться к самоучителю [1].) 1.1. Основные понятия Приложение может выводить графику на поверхность объекта – формы или компонента. Существует ряд специальных компонентов для вывода готовых изображений (рисунков или фотографий) из графических файлов (компонент Image), некоторых геометрических фигур (компонент Shape), графиков и диаграмм (компонент Chart). Изображения, формируемые приложением, можно выводить на поверхность формы или компонентов Image и PaintBox. Поверхности объекта соответствует свойство Canvas. В свою очередь, свойство Canvas (канва, холст) – это объект типа (класса) TСanvas. Методы этого типа обеспечивают вывод графических примитивов (точек, линий, окружностей, прямоугольников и т.д.), а свойства позволяют задать характеристики выводимых графических примитивов (цвет, толщину и стиль линий; цвет и вид заполнения областей; характеристики шрифта при выводе текстовой информации). Канва состоит из отдельных точек – пикселей – и имеет свойство Pixels, которое содержит информацию о цвете каждой точки графической поверхности и представляет собой матрицу типа TColor. Положение пикселя характеризуется его горизонтальной x и вертикальной y координатами. Система координат канвы имеет началом левый верхний угол компонента или формы (координата x возрастает при перемещении слева направо, а координата y – при перемещении сверху вниз). Значения координат правой нижней точки поверхности вывода зависят от размера холста (рис. 1). Его размер можно установить с помощью «Инспектора объектов» или программно возвратить, обратившись к свойствам Height и Width компонентов или к свойствам формы ClientHeight и ClientWidth. Важнейшее свойство пикселя – его цвет (Color). Для описания цвета используется тип TColor. Свойство Color используется 4
практически каждым компонентом. В Delphi определено множество констант типа TСolor. Одни из них непосредственно определяют цвета (например, clGreen – зеленый), другие определяют цвета элементов окон, которые могут меняться в зависимости от выбранной пользователем палитры цветов Windows (например, clBtnFace – цвет поверхности кнопок). Рис. 1. Координаты точек холста (канвы) В табл. 1 приведены именованные константы, которые можно использовать в качестве значения свойства Color. Таблица 1 Константа Цвет Константа Цвет clBlack Черный clSilver Серебристый сlMaroon Каштановый clRed Красный clGreen Зеленый clLime Салатовый clOlive Оливковый clBlue Синий clNavy Темно-синий clFuchsia Ярко-розовый сlPurple Розовый clAqua Бирюзовый clTeal Зелено-голубой clWhite Белый clGray Серый 1.2. Карандаш и кисть Методы, обеспечивающие вычерчивание на поверхности канвы графических примитивов, используют карандаш и кисть. Первый предназначен для вычерчивания линий, вторая – для заливки областей, ограниченных линиями. 5
Карандашу соответствует свойство Pen – перо типа TPen. Это объект, в свою очередь имеющий ряд свойств. Одно из них – уже известное свойство Color – цвет, которым наносится рисунок. Второе свойство – Width (ширина линии), которое задается в пикселях и по умолчанию равно 1 пикселю. Третье свойство Style определяет вид линии. В табл. 2 приведены именованные константы, которые можно использовать в качестве значения свойства Style. Таблица 2 Константа Стиль линии psSolid Сплошная линия psDash Пунктирная линия, длинные штрихи psDot Пунктирная линия, короткие штрихи psDashDot Пунктирная линия, чередование длинного и короткого штрихов psDashDotDot Пунктирная линия, чередование одного длинного и двух коротких штрихов psClear Линия не отображается (когда не нужно изображать границу области) Примечание. Все пунктирные линии имеют толщину, равную 1 пикселю. У пера есть еще одно свойство – Mode. Оно определяет то, как будет формироваться цвет точек линии в зависимости от цвета точек холста, через которые эта линия пролегает. По умолчанию линия вычерчивается цветом, определяемым значением свойства Pen.Color. В табл. 3 приведены некоторые именованные константы, которые можно использовать в качестве значения свойства Mode. Таблица 3 Константа Цвет линии pmBlack Черный, не зависит от значения свойства Pen.Color pmWhite Белый, не зависит от значения свойства Pen.Color pmCopy Цвет линии определяется значением свойства Pen.Color pmNotCopy Цвет линии является инверсным по отношению к значению свойства Pen.Color pmNot Цвет линии определяется как инверсный по отношению к цвету точки холста У канвы имеется свойство PenPos типа TРoint (предопределенный тип TРoint представляет собой запись, поля х и y которой 6
содержат координаты точки). Это свойство определяет в координатах канвы текущую позицию пера. Перемещение пера без прорисовки линии, т. е. изменение PenPos, производится методом канвы MoveTo (x, y). Точка с координатами ( x, y) становится текущей и от нее методом LineTo (x, y) можно провести линию в точку с другими координатами (x, y). При этом PenPos определяет уже конечную точку линии, и новый вызов LineTo будет проводить линию из этой новой текущей точки. Кисти соответствует свойство канвы Brush – кисть типа TBrush. Оно определяет фон и цвет заполнения замкнутых фигур. Brush – это объект, имеющий в свою очередь ряд свойств. Свойство Color определяет цвет заполнения фигуры, а свойство Style – шаблон (штриховку). В табл. 4 приведены именованные константы, которые можно использовать в качестве значения свойства Style. Таблица 4 Константа Стиль заполнения области bsSolid Сплошная заливка bsClear Область не закрашивается bsHorisontal Горизонтальная штриховка bsVertical Вертикальная штриховка bsFDiagonal Диагональная штриховка с наклоном линий вперед bsBDiagonal Диагональная штриховка с наклоном линий назад bsCross Горизонтально-вертикальная штриховка, в клетку bsDiagCross Диагональная штриховка, в клетку В табл. 5 приведены некоторые методы канвы для рисования фигур. Таблица 5 Метод Описание Arc (x1, y1, x2, y2, x3, y3, x4, y4: integer) Рисует дугу окружности или эллипса. Точки (x1, y1) и (x2, y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (x3, y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (x4, y4). Дуга рисуется против часовой стрелки от начальной до конечной точки 7
Окончание табл. 5 Метод Описание Chord (x1, y1, x2, y2, x3, y3, x4, y4: integer) Рисует дугу окружности или эллипса, замкнутую хордой. Точки (x1, y1) и (x2, y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (x3, y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (x4, y4). Дуга рисуется против часовой стрелки от начальной до конечной точки. Хорда соединяет точки (x3, y3) и (x4, y4) Ellipse (x1, y1, x2, y2: integer) Рисует заполненную окружность или эллипс. Точки(x1, y1) и (x2, y2) определяют прямоугольник, описывающий эллипс Pie (x1, y1, x2, y2, x3, y3, x4, y4: integer) Рисует замкнутую фигуру – сектор окружности или эллипса. Точки (x1, y1) и (x2, y2) определяют прямоугольник, описывающий эллипс. Начальная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (x3, y3). Конечная точка дуги определяется пересечением эллипса с прямой, проходящей через его центр и точку (x4, y4). Дуга рисуется против часовой стрелки от начальной до конечной точки. Рисуются прямые, ограничивающие сектор и проходящие через центр эллипса и точки (x3, y3) и (x4, y4) Polygon (Points: array of TPoint) Рисует замкнутый многоугольник по координатам угловых точек, заданных массивом Points. Первая из указанных точек соединяется с последней PolyLine (Points: array of TPoint) Рисует кусочно-линейную незамкнутую кривую по координатам точек, заданных массивом Points. При этом текущая позиция PenPos пера не изменяется Rectangle (x1, y1, x2, y2: integer) Рисует прямоугольник, верхний левый угол которого имеет координаты (x1, y1), а нижний правый – (x2, y2) RoundRect (x1, y1, x2, y2, x3, y3: integer) Рисует прямоугольник со скругленными углами, верхний левый угол которого имеет координаты (x1, y1), а нижний правый – (x2, y2). Углы скругляются с помощью эллипсов с шириной x3 и высотой y3 Примечание. Для изображения закрашенной фигуры перед использованием соответствующего метода (Chord, Ellipse, Pie, Polygon и др.) необходимо заказать цвет и стиль ее закраски (Brush.Color и Brush.Style). Для заполнения замкнутых областей произвольной формы можно использовать метод FloodFill (x, y: integer; Color: TColor; FillStyle: TFillStyle) 8
Тип TFillStyle определен следующим образом: type TFillStyle = (fsSurface, fsBorder); Точка с координатами (x, y) является произвольной внутренней точкой заполняемой области. Граница этой области определяется сочетанием параметров Color и FillStyle. Параметр Color указывает цвет, который используется при определении границы заполняемой области, а параметр FillStyle определяет, как именно по этому цвету определяется граница. Если FillStyle = fsSurface, то заполняется область, окрашенная цветом Color, а на других цветах метод останавливается. Если FillStyle = Border, то наоборот, заполняется область, окрашенная любыми цветами, не равными Color, а на цвете Color метод останавливается. Для вывода текста на графическую поверхность используется метод TextOut (x, y : integer; text : string). Для определения параметров выводимого текста используется свойство канвы Font – шрифт типа TFont, которое в свою очередь является объектом и имеет ряд свойств. В табл. 6 приведены свойства объекта Font. Таблица 6 Свойство Назначение Name Определяет вид (название) шрифта (Arial, Times New Roman, Courier и т. д.) Size Pазмер шрифта в пунктах (points). Один пункт равен 1/72 дюйма Style Стиль начертания символов задается с помощью предопределенных констант: fsItalic (курсив), fsBold (полужирный), fsUnderLine (подчеркнутый), fsStrikeOut( перечеркнутый). Это свойство является множеством, что позволяет комбинировать нужные стили Color Цвет символов Height Размер шрифта в пикселях Текст выводится на графическую поверхность в позицию с координатами (x, y) в соответствии с текущими установками шрифта Font. Фон надписи определяется установками текущей кисти Brush (если нет необходимости в фоне для надписи, то перед выводом текста свойству Brush.Style нужно присвоить значение bsClear или задать свойству Brush.Color цвет, совпадающий с цветом поверхности, на которую выводится текст – например, clBtnFace). По завершении метода текущей позицией PenPos пера Pen становится конец выведенного текста. 9
Перечисленные свойства и методы представляют не все графические возможности Delphi. Однако они обеспечивают около 80 % потребностей, обычно возникающих при работе с графикой. 1.3. Порядок создания изображения Как уже отмечалось, канва представляет собой область, на которой можно рисовать или отображать готовые иллюстрации. Она является свойством формы или перечисленных выше компонентов. Если для рисования используется, например, компонент Image или PaintBox, то сначала его размещают на форме. Затем на канве компонента с помощью перечисленных свойств и методов создают изображение – записывают код в обработчик какого-либо события. 1.4. Создание изображений плоских геометрических объектов При создании приложений, формирующих плоское изображение, необходимо выяснить, на какие элементарные геометрические фигуры (объекты): точки, отрезки, прямоугольники, дуги, окружности и др. – можно разбить исходный рисунок. В результате проведенного анализа можно подобрать для их изображения стандартные методы. После создания изображения при необходимости замкнутые области заполняют выбранным стилем и цветом. Однако большинство методов позволяет выводить требуемый объект только частного положения. Поэтому для вывода таких объектов при их произвольной ориентации на плоскости следует разрабатывать собственные процедуры. При формировании изображения необходимо составить выражения для вычисления координат точек, используемых при обращении к процедурам и методам рисования объектов. При этом одну из точек изображения принимают за базовую, а координаты всех других точек вычисляют по отношению к ней. Такой подход позволяет путем изменения только координат базовой точки изменить расположение изображения на экране. Необходимо следить за тем, чтобы вычисляемые координаты точек принимали целые неотрицательные значения. 1.5. Преобразование изображений При формировании изображений часты ситуации, когда рисунок включает в себя ряд подрисунков, различающихся между со 10