СОДЕРЖАНИЕ
ВВЕДЕНИЕ………………………………………………………………………..3
ГЛАВА I. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ LAZARUS ……………..4
Интегрированная среда Lazarus…………………………………….4
Стандартные компоненты системы Lazarus……………………...10
Ключевые слова, типы данных в системе ООП Lazarus …………………………………………………………………………...14
ГЛАВА II. ГРАФИКА В СРЕДЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ LAZARUS…………………………………………18
Инструменты рисования в среде ООП Lazarus…………..............18
Практические работы на тему «Графика в ООП Lazarus»………………….……………………………………………….............23
ЗАКЛЮЧЕНИЕ………………………………………………………….............28
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ……..……………………..30
ПРИЛОЖЕНИЕ №1. Программный код изображения «Графические Примитивы»……………………………………...................................................32
ПРИЛОЖЕНИЕ №2. Программный код изображения «График»………………………………………………………………................34
ПРИЛОЖЕНИЕ №3. Программный код изображения «Дом»……………………………………………………………………………..36
ПРИЛОЖЕНИЕ №4. Программный код приложения «Рисовалка»…………………………………………………………....................38
ПРИЛОЖЕНИЕ №5. Диск с изображениями выполненными в ООП Lazarus
Введение
Что же такое Lazarus? Это среда для объектно-ориентированного программирования на языке Free Pascal. Визуально очень напоминает Delphi, но в отличии от нее Lazarus – свободная программа, используя ее вы не нарушаете ни чьих прав. Существует версия для Windows-систем, а также версии для MacOS и Linux. Как у любого программного средства имеет свои недостатки, в частности достаточно большой размер получаемых файлов, нестабильная работа на некоторых системах.
Lazarus является идеальным средством для изучения языка программирования Паскаль в школах и вузах в полном соответствии с Концепцией развития разработки и использования свободного программного обеспечения в Российской Федерации. В пакете свободного программного обеспечения (ПСПО) для образовательных учреждений РФ Free Pascal и Lazarus также имеются.
Объект исследования: создание примитивных изображений средствами объектно-ориентированного программирования.
Предмет исследования: создание графических изображений в среде ООП Lazarus.
Цель: выявить способы создания изображений в ООП Lazarus.
Задачи исследования:
1. Изучить и проанализировать специальную и научно-исследовательскую литературу по теме исследования.
2. Дать теоретическое обоснование основ работы с открытой средой разработки Lazarus.
3. Познакомиться с разделом графики в ООП Lazarus.
4. Подготовить изображения выполненные в среде Lazarus.
Методы исследования: изучение специальной литературы, анализ, синтез, обобщение, моделирование.
ГЛАВА I. ГРАФИКА В СРЕДЕ ОБЪЕКТНО - ОРИЕНТИРОВАННОГО ПРОГРАМИРОВАНИЯ LAZARUS
Интегрированная среда Lazarus
Lazarus – среда быстрой разработки программного обеспечения для компилятора Free Pascal, аналогичная Delphi.
Данный проект базируется на оригинальной кроссплатформенной библиотеке визуальных компонентов Lazarus Component Library (LCL).
Кроссплатформенное программное обеспечение – это программное обеспечение, работающее более чем на одной аппаратной платформе и/или операционной системе.
Free Pascal – это компилятор языков Pascal и Object Pascal, работающий под Windows, Linux, Mac OS X, FreeBSD, и другими ОС.
Таким образом, разработанные приложения могут функционировать практически под любой операционной системой.
Все, что видно на экране во время работы различных приложений, все элементы (кнопки, бегунки, меню и т.п.) можно реализовать в Lazarus.
В Lazarus используется технология визуального программирования. Пользователь для создания графического интерфейса приложения использует готовые компоненты, значки которых находятся на панели компонентов. После того как он помещает компонент на форме, программный код для него генерируется автоматически. Вручную остается запрограммировать только те действия, которые будет выполнять это приложение.
Процесс создания приложения можно разделить на следующие этапы:
1. Создание проекта. В результате на экране появляется пустая форма (окно будущего приложения).
2. Создание графического интерфейса проекта – расположение необходимых элементов, задание размеров, изменение свойств;
3. Написание программного кода, который определит, что будет делать ваша программа.
4. Отладка программы.
Чтобы установить Lazarus на ваш компьютер нужно зайти на http://www.freepascal.ru и закачать последнюю стабильную версию Lazarus. В процессе установки следует согласиться с условиями лицензионного соглашения. После установки в меню программ появится новая группа Lazarus.
Запустить интегрированную среду разработки (ИСР) Lazarus можно с помощью команды Главного меню Windows: Пуск → Все Программы → Lazarus → Lazarus (рис.1).
Рис. 1. Группа Lazarus
При этом запускается оболочка создания приложений, называемая интегрированной средой разработки IDE (Integrated Development Environment)(рис.2). На экране появиться набор окон.
Рис. 2. Интегрированная среда разработки IDE
Тут можно увидеть все основные инструменты среды разработки Lazarus:
1. Окно формы – окно будущего приложения.
2. Главное окно, содержащее три панели: меню, панель инструментов, палитру компонентов. Палитра компонентов используется для выбора необходимых для создания пользовательского интерфейса компонентов.
3. Окно Инспектор объектов, содержащее файлы проекта и окно со вкладкой Свойства, в котором будут настраиваться свойства помещенных на форму объектов.
4. Окно Редактор исходного кода, в котором будет написан программный код.
Рассмотрим краткую характеристику данных окон.
Главное окно. Здесь располагаются меню, панель инструментов и палитра компонентов (рис. 3).
Рис. 3. Главное окно
На Палитре компонентов, представляющей собой множество тематических вкладок, располагаются визуальные и невизуальные компоненты для будущей программы.
Невизуальные компоненты видны только на первом этапе создания приложения – при редактировании.
Главное окно остается открытым все время работы IDE. Закрыв его, закроется Lazarus и все открытые в нем окна.
Инспектор объектов(рис.4) содержит четыре страницы
Рис. 4. Инспектор объектов
На первой странице «Свойства» постоянно отображаются все доступные свойства выбранного компонента. В левой колонке содержится список всех свойств выделенного в данный момент компонента, в правой – значения свойств.
Значения свойств можно менять еще до запуска проектируемой программы. Например, для будущего окна приложения (формы) свойство Name имеет значение Form1. Для изменения имени достаточно изменить его в Инспекторе объектов.
На второй странице «События» находятся возможные обработчики событий для выбранного компонента. В левой колонке расположены названия события, в правой – соответствующие процедуры.
Окно Редактора кода(рис.5). На момент первого запуска оно имеет заголовок Unit1.
Рис. 5. Окно редактора кода
В окне Редактор исходного кода пользователь записывает программный код. Само окно очень похоже на обычный текстовый редактор. Для удобства при редактировании текста программы строки пронумерованы, предусмотрено выделение цветами:
все служебные слова выделяются жирным шрифтом;
знаки препинания становятся красными;
строки с ошибками выделяются коричневым цветом;
комментарии могут заключаться в фигурные скобки {} и выделяются синим.
Текст программы разбивается на части – процедуры и функции.
Основную работу программист производит именно здесь.
Проектировщик форм. У каждого Windows - приложения должно быть хотя бы одно окно.
Lazarus при первом запуске автоматически предлагает пользователю новый проект, открывая пустую форму(рис.6) под названием Form1, и назначает его главным окном.
Рис. 6. Форма
Перенося на него элементы из палитры компонентов, тем самым, предварительно пользователь оформляет его.
Главное окно в проекте может быть только одно. Все другие создаваемые окна будут дочерними. Закрывая главное окно стандартной кнопкой закрытия окна, или программно, закроются и все дочерние окна.
Стандартные компоненты системы Lazarus
3. Ключевые слова, типы данных в системе ООП Lazarus
1. Переменные
Переменная представляет собой зарезервированное место в оперативной памяти для временного хранения данных. Переменная характеризуется именем и типом данных
Имя – это слово, которое используется для ссылки на значение, которое содержит переменная
Имена переменных надо выбирать так, чтобы они были как можно короче, но одновременно понятными:
Например: переменная для обозначения времени: t
переменная для обозначения временного интервала: dt
максимальная высота подъема: Hmax или maxH.
2. Соглашение об именах
Имена переменных, констант, процедур, объявляемых в программе должны соответствовать следующим требованиям
начинаться с латинской буквы
должны отсутствовать пробелы
не должны содержать точки
должны отливаться от ключевых слов языка
длина не должна превышать 255 символов
Можно: CurrentNum, Total, Date_Of_Birth. Нельзя: 1Time, $Total, Date of Birth.
3. Тип данных
Тип данных – определяет вид данных, который можно хранить в этой переменной.
Типы данных относятся к самым фундаментальным свойствам любого языка программирования. Данные, с которыми работает программа, хранятся в оперативной памяти. Компилятору необходимо знать, сколько места они занимают, и какие действия с ними можно выполнять. Т.О. тип данных однозначно определяет возможный диапазон значений переменной и допустимые над ней действия.
В языке Паскаль существует очень разветвлённая система типов, но пока рассмотрим только некоторые из них:
Целые типы - простые типы для представления целых чисел.
Имя типа. | Диапазон значений. | Размер памяти. |
shortint | - 128 .. 127 | 1 байт |
integer | - 32768 .. 32767 | 2 байтa |
long | - 2147483648 .. 2147483647 | 4 байтa |
byte | 0 .. 255 | 1 байт |
word | 0 .. 65535 | 2 байтa |
Вещественные типы - простые типы для представления вещественных чисел
Имя типа. | Диапазон значений. | Число цифр мантиссы. | Размер памяти. |
Real | 2.9e-39 .. 1.7e+38 | 11 - 12 | 6 байт |
Single | 1.5e-45 .. 3.4e+38 | 7 - 8 | 4 байт |
Double | 5.0e-324 .. 1.7e+308 | 15 - 16 | 8 байт |
Extende | 3.4e-4932 .. 1.1e+4932 | 19 - 20 | 10 байт |
Comp | -9.2e+18 .. 9.2e + 18 | 19 - 20 | 8 байт |
Итак, прежде чем использовать некую переменную в программе её необходимо объявить, т.е. указать её имя и тип данных, которые в ней могут храниться.
4. Объявление переменных
Объявление переменных помещается в разделе описаний после ключевого слова var
VAR : ;
: ;
Можно записать в одну строчку через запятую
, : ;
5. Оператор присваивания
Присвоить переменной вычисленное значение можно с помощью оператора присваивания. Главное условие при присваивании совместимость типов вычисленного выражения и переменной, которой оно присваивается. Оператор присваивания на Паскале изображается двумя символами :=
Пример:
x := 0 ;
x := x + 1;
После выполнения первой операции x имеет значение 0, а в результате второй получает значение равное 1.
6. Арифметические операции
Над действительными и целыми числами определены четыре арифметические действия: сложение, вычитание, умножение и деление. Возведение в степень в языке Паскаль не предусмотрено. Для целых чисел определены две операции деления с целочисленным результатом: целочисленное деление и остаток от целочисленного деления:
Оператор | Выполняемая операторы | Пример |
+ | сложение | С:=А+В |
- | вычитание | С:=А-В |
* | умножение | С:=А*В |
/ | деление | С:=А/В |
mod | остаток от деления нацело | С:=А mod В |
div | целочисленное деление | С:=А div В |
7. Приоритет арифметических операций
Порядок арифметических операций следующий
Операторы | Порядок вычисления |
( ) | Первыми всегда вычисляются значения в круглых скобках. |
- | унарная операция (смена знака). |
* / | умножение и деление. |
div | целочисленное деление. |
mod | остаток от деления. |
+ - | Последние - это сложение и вычитание. |
8. Математические функции
функция | Назначение |
Abs(n) | абсолютное значение числа n. |
ArcTan(n) | арктангенс числа n в радианах. |
Cos(n) | косинус угла n. Угол n задается в радианах. |
Sin(n) | синус угла n. Угол n задается в радианах. |
Exp(n) | константа e, возведенную в степень n. |
Ln(x) | натуральный логарифм от числа x. |
Sqr(x) | квадрат числа x. |
Sqrt(x) | квадратный корень из числа x. |
Round(x) | округляет число x |
Таким образом, Lazarus – среда быстрой разработки программного обеспечения для компилятора Free Pascal, аналогичная Delphi. Данный проект базируется на оригинальной кроссплатформенной библиотеке визуальных компонентов Lazarus Component Library (LCL). Free Pascal – это компилятор языков Pascal и Object Pascal, работающий под Windows, Linux, Mac OS X, FreeBSD, и другими ОС. Разработанные приложения могут функционировать практически под любой операционной системой.
ГЛАВА II. ГРАФИКА В СРЕДЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ LAZARUS
Инструменты рисования в среде ООП Lazarus
Класс TCanvas — сердцевина графической подсистемы Lazarus. Он объединяет в себе и "холст" (контекст конкретного устройства GDI), и "рабочие инструменты" (перо, кисть, шрифт) и даже "подмастерьев" (набор функций по рисованию типовых геометрических фигур).
TCanvas не является компонентом, но она входит в качестве свойства во многие другие компоненты, которые должны уметь нарисовать себя и отобразить какую-либо информацию.
Для рисования TCanvas включает в себя шрифт, перо и кисть:
(рb) property Font: TFont ; {TFont: Charset, Color, Style, Size}
(Pt) property Pen: TPen; {TPen: Color, Mode, Style, Width}
(Рb) property Brush: TBrush; {TBrush: Bitmap, Color, Style}
Кроме того, можно рисовать и поточечно, получив доступ к каждому пикселу. Значение свойства
property Pixels[X, Y: Integer]: TColor;
соответствует цвету точки с координатами (X,Y).
Класс TCanvas
procedure Arc (X1, Y1, X2, Y2, XЗ,Y3, X4, Y4: Integer); | Рисует сегмент эллипса. Эллипс определяется описывающим прямоугольником (X1,Y1) — (X2,Y2). Начальная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X3,Y3). Конечная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X4,Y4). Сегмент рисуется против часовой стрелки. |
procedure Chord(X1, Y1, X2, Y2, XЗ,Y3, X4, Y4: Integer); | Рисует хорду и заливает отсекаемую ею часть эллипса. Эллипс, начальная и конечная точки определяются, как в Arc. |
procedure Ellipse(X1, Y1, X2, Y2:Integer); | Рисует и закрашивает эллипс, вписанный в прямоугольник (X1,Y1) — (X2,Y2). |
procedure MoveTo(X, Y: Integer); | Перемещает текущее положение пера (свойство PenPos) в точку (X,Y). |
procedure LineTo(X, Y: Integer); | Проводит линию текущим пером из текущей точки в (X,Y). |
procedure BrushCopy(const Dest:TRect; Bitmap: TBitmap; constSource: TRect; Color: TColor); | Производит специальное копирование. Прямоугольник Source из битовой карты Bitmap копируется в прямоугольник Dest на TCanvas; при этом цвет Color заменяется на цвет текущей кисти (Brush.Color). |
procedure CopyRect(const Dest:TRect; Canvas: TCanvas; constSource: TRect); | Производит копирование прямоугольника Source из TCanvas в прямоугольник Dest в области самого объекта. |
procedure FillRect(const Rect:TRect); | Производит заливку прямоугольника (текущей кистью). |
procedure Draw(X, Y: Integer; Graphic: TGraphic); | Осуществляет рисование графического объекта Graphic |
procedure StretchDraw(const Rect:TRect; Graphic: TGraphic); | Осуществляет рисование объекта Graphic в заданном прямоугольнике Rect. Если размеры их не совпадают, Graphic масштабируется. |
procedure FloodFill(X, Y: Integer; Color: TColor; FillStyle:TFillStyle); TFillStyle =(fsSurface, fsBorder); | Производит заливку области текущей кистью. Процесс начинается с точки (X,Y). Если режим FillStyle равен fsSurface, то он продолжается до тех пор, пока есть соседние точки с цветом Color. В режиме fsBorder закрашивание, наоборот, прекращается при выходе на границу с цветом Color. |
procedure Pie (X1, Y1, X2, Y2, XЗ,Y3, X4, Y4: Integer); | Рисует сектор эллипса, описываемого прямоугольником (X1,Y1) — (X2,Y2). Стороны сектора лежат на лучах, проходящих из центра эллипса через точки (X3.Y3) и (X4,Y4). |
procedure Polygon(const Points:array of TPoint); | Строит многоугольник, используя массив координат точек Points. При этом последняя точка соединяется с первой и внутренняя область закрашивается. |
procedure Polyline(const Points:array of TPoint); | Строит ломаную линию, используя массив координат точек Points. |
procedure Rectangle(X1, Y1, X2, Y2 :Integer); | Рисует прямоугольник с диагональю заданной координатами (X1,Y1) и (X2,Y2). |
procedure RoundRect (X1, Yl, X2, Y2,ХW, YH: Integer); | Рисует прямоугольник с закругленными углами. Координаты вершин — те же, что и в Rectangle. Закругления рисуются как сегменты эллипса с размерами осей по горизонтали и вертикали ХW и YH. |
function TextHeight(const Text:string): Integer; | Возвращает высоту строки Text в пикселах. |
function TextWidth(const Text:string): Integer; | Возвращает ширину строки Text в пикселах. |
procedure TextOut(X, Y: Integer;const Text: string); | Производит вывод строки Text. Левый верхний угол помещается в точку TCanvas (X,Y). |
procedure TextRect(Rect: TRect; X,Y: Integer; const Text: string); | Производит вывод текста с отсечением. Как и в TextOut, строка Text выводится с позиции (X,Y); при этом часть текста, лежащая вне пределов прямоугольника Rect, отсекается и не будет видна. |
property PenPos: TPoint; | Содержит текущую позицию пера TCanvas (изменяется посредством метода MoveTo). |
Пример рисунка «Дом»(рис. 7):
procedure TForm1.Button1Click(Sender: TObject);
begin
with Paintbox1.Canvas do begin
Brush.Color := clGray;
Rectangle(10,100,250,300); // корпус
Polygon([Point(0,100),Point(130,20),Point(260,100)]); // крыша
Brush.Color := clWhite;
Ellipse(110,40,150,80); // чердак
Rectangle(30,150,110,230); // окно
MoveTo(70,150);
LineTo(70,230);
Rectangle(150,300,230,150); // дверь
Brush.Color := clGray;
Polygon([Point(150,300),Point(150,150),Point(210,160),Point(210,300)]);
end;
end;
Рис. 7. Дом
2. Практические работы на тему «Графика в ООП Lazarus»
Практическая работа №1
Тема. Графические возможности языка Lazarus. Организация
рисования. Создаем приложение «Рисовалка».
Цель: познакомиться с особенностями программирования графики в Lazarus.
Теоретическая часть.
Вам уже известны графические возможности языка Паскаль. В языке Lazarus также можно рисовать на разных объектах. Многие компоненты языка Lazarus имеют свойство Canvas (Холст). На этом холсте мы можем рисовать кистью (Brush), пером (Pen), определять шрифт (Font).
Кисть(Brush) предназначена для закрашивания фигур. Она может иметь цвет (Color) и стиль (Style).
Свойство Color определяет цвет кисти.
Свойство Style определяет способ закрашивания. Возможные значения: bsSolid (сплошная кисть), bsHorizontal и bsVertical (горизонтальные и вертикальные полоски соответственно), bsFDiagonal и bsBDiagonal (наклонные вправо или влево полосы соответственно), bsCross (клетка) и другие.
Пример:
Form1.Canvas.Brush.Color:=clBlue; //присвоить кисти синий цвет
Form1.Canvas.Brush.Style:=bsCross;//установить стиль закраски в клетку
Form1.Canvas.Rectangle(80,80,180,150); //нарисовать прямоугольник
Получаем прямоугольник, закрашенный клетками синего цвета.
Результат на рисунке:
Перо (Pen) предназначено для рисования различных линий. У него может быть цвет (Color), вид (Style), ширина (Width), режим отображения (Mode).
Свойство Style может принимать значения: psSolid (сплошная линия), psDash (штрих), psDot (пунктир), psDashDot (штрих-пунктир) и другие.
Пример:
Form1.Canvas.Pen.Color:=clRed; //присвоить перу красный цвет
Form1.Canvas.Pen.Style:=psDot; //установить стиль в виде пунктирной линии
Form1.Canvas.Rectangle(80,80,180,150); //нарисовать прямоугольник
Получаем прямоугольник с пунктирной границей красного цвета.
Результат на рисунке:
На холсте мы можем нарисовать простейшие геометрические фигуры: точку (Pixels), линию (Line или LineTo), прямоугольник (Rectangle), эллипс (Ellipse), дугу (Arc) и другие. А также можем закрасить замкнутые области с помощью процедуры Floodfill.
Общий вид свойств и методов:
Свойство Pixels[X,Y]: Color – соответствует цвету точки с координатами (X,Y);
Пример: Form1.Canvas.Pixels[60,50]:=clred;//Вывести на форму красную точку.
Методы:
MoveTo(X,Y) – перемещает текущее положение пера в точку (X,Y);
LineTo(X,Y) – проводит линию текущим пером из текущей точки в точку (X,Y);
Line(X1,Y1,X2,Y2) – проводит линию от точки (X1,Y1) до точки (X2,Y2);
Rectangle(X1,Y1, X2,Y2) – рисует прямоугольник с диагональю заданной координатами (X1,Y1) и (X2,Y2);
Ellipse(X1,Y1, X2,Y2) – рисует и закрашивает эллипс, вписанный в прямоугольник (X1,Y1)- (X2,Y2);
Arc(X1,Y1,X2,Y2,XЗ,Y3,X4,Y4) - рисует сегмент эллипса. Эллипс определяется описывающим прямоугольником (X1,Y1)-(X2,Y2). Начальная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X3,Y3). Конечная точка сегмента лежит на пересечении эллипса и луча, проведенного из его центра через точку (X4,Y4). Сегмент рисуется против часовой стрелки;
FloodFill(X, Y, Color, FillStyle); FillStyle = (fsSurface, fsBorder) – производит заливку области текущей кистью. Процесс начинается с точки (X,Y). Если режим FillStyle равен fsSurface, то он продолжается до тех пор, пока есть соседние точки с цветом Color. В режиме fsBorder закрашивание, наоборот, прекращается при выходе на границу с цветом Color;
TextOut(X, Y, Text) – производит вывод строки Text. Левый верхний угол помещается в точку (X,Y).
Определены следующие константы цветов:
clAqua clBlack clBlue clCream clFuchsia clGray clGreen clLime clMaroon clMoneyGreen | Бирюзовый Черный Синий Кремовый Сиреневый Серый Зелёный Ярко-зелёный Темно-красный Зелёные деньги | clNavy clOlive clPurple clRed clSilver clSkyBlue clTeal clWhite clYellow | Темно-синий Оливковый Фиолетовый Красный Серебряный Голубой Сине-зелёный Белый Жёлтый |
Функция RGBToColor(R, G, B: integer): TColor позволяет определить любой цвет.
Пример:
RGBToColor(170,105,70); //определить коричневый цвет.
Практическая часть.
Создайте новый проект. Измените некоторые свойства формы:
Свойство | Значение |
Name | FrmDraw |
Caption | Рисовалка |
Разместите на форме компонент Shape. Найти его можно на вкладке Additional палитры компонентов. Этот компонент позволяет вывести на форму какую-либо фигуру, например прямоугольник, окружность, треугольник и т.д. Как будет выглядеть Shape на форме, это зависит от его свойства Shape. Нам нужно, чтобы он выглядел в виде прямоугольника (rectangle), так как он будет играть роль экрана, на котором мы будем рисовать.
Разместите также на форме кнопку и измените её свойства:
Свойство | Значение |
Name | BtnDraw |
Caption | Рисовать |
Вот что должно получиться:
Теперь дважды щёлкните по кнопке Рисовать.
Активизировалась процедура TFrmDraw.BtnDrawClick(Sender: TObject);
Впишите в тело процедуры ниже следующий код.
Пояснение.
1. Вместо записи длинных строк типа:
Shape1.Canvas.Rectangle(80,80,180,150), мы воспользуемся оператором with do, который поможет сократить текст программы;
2. Комментарии, которые отделяются знаком // печатать не нужно.
with Shape1.Canvas do
begin
pen.Color:=clGray; //установить цвет пера
rectangle(80,80,180,150); //рисовать основание дома
rectangle(100,90,120,120); //рисовать окно
rectangle(140,110,170,150); //рисовать дверь
moveto(80,80); //переместиться в точку (80,80)
lineto(130,40);
lineto(180,80); //рисовать крышу
brush.Color:=clBlue; //установить цвет заливки
floodfill(140,90,clGray,fsBorder); //закрасить дом
brush.Color:=clGreen;
floodfill(150,130,clGray,fsBorder); //закрасить дверь
brush.Color:=clAqua;
floodfill(110,100,clGray,fsBorder); //закрасить окно
brush.Color:=clRed;
floodfill(130,60,clGray,fsBorder); //закрасить крышу
brush.Color:=clYellow; //установить цвет заливки
ellipse(30,10,60,40); //рисовать солнце
textout(120,160,'Дом'); //вывести надпись
end;
Задание. Придумайте свой рисунок и напишите к нему программу, максимально используя графические возможности языка Lazarus.
Контрольные вопросы:
1. Назовите основное свойство компонентов языка Lazarus, позволяющее рисовать на этих компонентах.
2. Какими инструментами обладает это свойство?
2. Назовите основные графические методы.
Практическая работа №2.
Цель: научиться использовать свойство объекта Canvas для рисования графики.
Создадим форму, установим ей размеры Heigth -500, Width- 500. Внизу разместим кнопку, зададим ей свойство Caption -«Рисовать». При запуске программы и щелчке по этой кнопке на форме прорисуются различные фигуры рисунок 19. Ниже приведен листинг программы, демонстрирующий работу перечисленных методов. Результат работы программы приведен на рисунок 19.
Рисунок 19. Пример использования методов рисования фигур
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Lresources, Forms,
Controls, Graphics, Dialogs, StdCtrls;
type
{ Tform1 }
Tform1 = class(Tform)
Button1: Tbutton;
procedure Button1Click(Sender: Tobject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: Tform1;
implementation
{ Tform1 }
procedure Tform1.Button1Click(Sender: Tobject);
var t: array [1..5] of Tpoint;
begin
Form1.Canvas.LineTo(500,500);//Рисование линии
//Изменение цвета и толщины линии.
Form1.Canvas.Pen.Color:= clMaroon;
Form1.Canvas.Pen.Width:= 5;
//Рисование прямоугольника.
Form1.Canvas.Rectangle(50,50,200,200);
Form1.Canvas.Pen.Color:= clolive;
//Рисование эллипса.
Form1.Canvas.Ellipse(50,50,100,200);
//Рисование прямоугольника с скругленными углами.
Form1.Canvas.RoundRect(250,250,400,400,30,30);
//Рисование сектора окружности.
Form1.Canvas.Pie(300,300,400,400,350,350,500,500);
//Массив координат вершин пятиугольника.
T[1].x:=250; t[1].y:=10;
t[2].x:=350; t[2].y:=15;
t[3].x:=400; t[3].y:=50;
t[4].x:=300; t[4].y:=150;
t[5].x:=250; t[5].y:=100;
Form1.Canvas.Polygon (t) ;
Form1.Canvas.TextOut(10,10,'это вывели текст');
end;
initialization
{$I unit1.lrs}
end.
Заключение
Lazarus – это бесплатный инструмент разработки с открытым кодом. IDE Lazarus представляет собой среду с графическим интерфейсом для быстрой разработки программ, аналогичную Delphi, и базируется на оригинальной кроссплатформенной библиотеке визуальных компонентов LCL (Lazarus Component Library). Интерес к ней значительно возрастает в связи с, во-первых, ее функциональностью, а во-вторых, с ее доступностью для большого круга пользователей. В связи с этим курсовая работа была посвящена данной среде разработки приложений.
Программа очень проста в использовании и не так сложна, как может показаться с первого взгляда.
В ходе написания курсовой работы были решены все поставленные задачи:
1. Анализ литературы по теме исследования показал, что данная тема достаточно хорошо освещена в печатных изданиях, таких как [1,3,5]. Значительную помощь в подготовке материалов работы оказали сайты [8,12,20-24].
2. Lazarus – среда быстрой разработки программного обеспечения для компилятора Free Pascal, аналогичная Delphi. Данный проект базируется на оригинальной кроссплатформенной библиотеке визуальных компонентов Lazarus Component Library (LCL). Free Pascal – это компилятор языков Pascal и Object Pascal, работающий под Windows, Linux, Mac OS X, FreeBSD, и другими ОС. Разработанные приложения могут функционировать практически под любой операционной системой. Процесс создания приложения можно разделить на следующие этапы:
Создание проекта. В результате на экране появляется пустая форма (окно будущего приложения).
Создание графического интерфейса проекта – расположение необходимых элементов, задание размеров, изменение свойств;
Написание программного кода, который определит, что будет делать ваша программа.
Отладка программы.
3. Класс TCanvas — сердцевина графической подсистемы Lazarus. Он объединяет в себе и "холст" (контекст конкретного устройства GDI), и "рабочие инструменты" (перо, кисть, шрифт) и даже "подмастерьев" (набор функций по рисованию типовых геометрических фигур).
TCanvas не является компонентом, но она входит в качестве свойства во многие другие компоненты, которые должны уметь нарисовать себя и отобразить какую-либо информацию.
4. Приложение представлено отдельным диском с изображениями выполненными с помощью графических возможностей ООП Lazarus, а также в печатном виде, представлен открытый программный код данных приложений.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Алексеев, Е. Р. Самоучитель по программированию на Free Pascal и Lazarus / Е. Р. Алексеев, О. В. Чеснокова, Т. В. Кучер. – Донецк. : ДонНТУ, Технопарк ДонНТУ УНИТЕХ, 2011. - 503 с.
Архангельский, А. Я. Приемы программирования в Delphi. Бином-Пресс, 20011. 344 с.
Фаронов, В. В. Delphi. Программирование на языке высокого уровня: Учебник для вузов. - Спб.:Питер, 2011.-640 с.
Фленов, М. Е. Библия Delphi (2-е издание). БХВ-Петербург, 2011. 453 с.
Ершов, А. П. Введение в теоретическое программирование: Беседы о методе / А. П. Ершов. – М. : Книга по Требованию, 2012. – 288 с.
Осипов, Д. В. Графика в проектах Delphi. Символ-Плюс, 2011. 459 с.
http : //ru . wikipedia. org/wiki/GNU_Pascal
http://www.freepascal.org
http://www.gnu-pascal.de/gpc/h-index.html
http://wiki.freepascal.org/Main_Page/ru
http://www.freepascal.ru
http://www.lazarus.freepascal.org
http://ru.wikipedia.org/wiki/Lazarus
http://www.sdteam.com/?tid=331
http://www.delphisources.ru/pages/faq/faq_delphi_basics/Move.php.htm
http://www.delphibasics.ru/MessageDlg.php
http://www.delphisources.ru/pages/faq/faq_delphi_basics/
http://program.rin.ru/
http://www.delphilab.ru/
http://flash-library.narod.ru/UMK/Lazarus/Cnsl-01.html.
http://wiki.freepascal.org/Console_Mode_Pascal.
http://wiki.freepascal.org/Overview_of_Free_Pascal_and_Lazarus.
http://wiki.freepascal.org/Object_Oriented_Programming_with_FreePascal_and_Lazarus/ru.
http://wiki.freepascal.org/Lazarus_IDE_Tools/
http://www.tnu.in.ua/study/refs/d191/file33598.html
ПРИЛОЖЕНИЕ №1
Программный код изображения «Графические примитивы»
procedure TForm1.Button1Click(Sender: TObject);
var t: array [1..5] of Tpoint;
begin
Form1.Canvas.LineTo(500,500);
Form1.Canvas.Pen.Color:= clMaroon;
Form1.Canvas.Pen.Width:= 5;
Form1.Canvas.Rectangle(50,50,200,200);
Form1.Canvas.Pen.Color:= clolive;
Form1.Canvas.Ellipse(50,50,100,200);
Form1.Canvas.RoundRect(250,250,400,400,30,30);
Form1.Canvas.Pie(300,300,400,400,350,350,500,500);
T[1].x:=250; t[1].y:=10;
t[2].x:=350; t[2].y:=15;
t[3].x:=400; t[3].y:=50;
t[4].x:=300; t[4].y:=150;
t[5].x:=250; t[5].y:=100;
Form1.Canvas.Polygon (t) ;
Form1.Canvas.TextOut(10,10,'это вывели текст');
end;
end.
ПРИЛОЖЕНИЕ №2
Программный код изображения «График»
procedure TForm1.Button1Click(Sender: TObject);
var temp :array [1..25] of Tpoint;
i : byte;
j: integer;
begin
j:=1;
for i:=1 to 25 do
begin
temp[i].x:=25+(i-1)*10;
temp[i].y:=150-j*(i-1)*5;
j:=-j;
end;
Form1.Canvas.Polyline (temp);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
end.
ПРИЛОЖЕНИЕ №3
Программный код изображения «Дом»
procedure TForm1.Button1Click(Sender: TObject);
begin
with Paintbox1.Canvas do begin
Brush.Color := clGray;
Rectangle(10,100,250,300); // корпус
Polygon([Point(0,100),Point(130,20),Point(260,100)]); // крыша
Brush.Color := clWhite;
Ellipse(110,40,150,80); // чердак
Rectangle(30,150,110,230); // окно
MoveTo(70,150);
LineTo(70,230);
Rectangle(150,300,230,150); // дверь
Brush.Color := clGray;
Polygon([Point(150,300),Point(150,150),Point(210,160),Point(210,300)]);
end;
end;
end.
ПРИЛОЖЕНИЕ №4
Программный код приложения «Рисовалка»
procedure TFrmDraw.BtnDrawClick(Sender: TObject);
begin
with Shape1.Canvas do
begin
pen.Color:=clGray;
rectangle(80,80,380,350);
rectangle(100,90,180,220);
rectangle(220,150,320,340);
moveto(80,80);
lineto(230,20);
lineto(380,80);
brush.Color:=clBlue;
floodfill(140,85,clGray,fsBorder);
brush.Color:=clGreen;
floodfill(225,170,clGray,fsBorder);
brush.Color:=clAqua;
floodfill(110,95,clGray,fsBorder);
brush.Color:=clRed;
floodfill(230,25,clGray,fsBorder);
brush.Color:=clYellow;
ellipse(10,10,70,70);
font.Size:=20;
textout(250,100,'Дом');
end;
end;
end.
33