
- •Сборник практических работ
- •Практическая работа № 1 Управляющие структуры Delphi. Программирование линейных алгоритмов.
- •Усвоить применение компонентов Label, Edit, Button и BitBtn.
- •Получить практические навыки программирования линейных алгоритмов в Delphi.
- •Практическая работа № 2 Управляющие структуры Delphi. Программирование ветвящихся алгоритмов. Инструкция If
- •Изучить структуру простого проекта на языке Delphi.
- •Усвоить применение инструкции if.
- •Практическая работа № 3 Реализация ветвящихся алгоритмов для решения прикладных задач
- •Получить практические навыки работы с ветвящимися алгоритмами в Delphi.
- •Практическая работа № 4 Использование визуальных компонентов Delphi для организации структуры ветвления:
- •Получить практические навыки работы с ветвящимися алгоритмами в Delphi.
- •Усвоить применение компонента RadioButton.
- •Усвоить применение компонента RadioGroup.
- •Группа переключателей RadioGroup
- •0:MessageDlg('Внимание! Не выбран ни один цвет!',mtInformation,[mbOk],0);
- •Практическая работа № 5 Использование визуальных компонентов Delphi для работы со списками –
- •Получить практические навыки работы с ветвящимися алгоритмами в Delphi.
- •Усвоить применение компонента ListBox.
- •Усвоить применение компонента ComboBox.
- •Практическая работа № 6 Использование циклических структур в Delphi
- •Получить практические навыки работы с циклическими алгоритмами в Delphi.
- •Закрепить практические навыки применения компонентов ListBox, ComboBox.
- •Закрепить практические навыки применения компонентов RadioButton, RadioGroup.
- •Формат записи оператора Repeat…until:
- •Практическая работа № 7 Разработка простейшего приложения типа «Калькулятор»
- •Закрепить практические навыки применения компонентов страницы Standart.
- •Закрепить практические навыки написания обработчиков простейших событий.
- •Практическая работа № 8 Разработка приложения для обработки массива
- •Освоить работу с массивами.
- •Усвоить применение компонента StringGrid.
- •Практическая работа № 9 Разработка простейшего графического редактора
- •Порядок выполнения
- •Практическая работа № 10 Разработка приложений с использованием компонентов Shape и Image
- •Порядок выполнения
Практическая работа № 9 Разработка простейшего графического редактора
Цель работы:
Получить навыки использования свойства Canvas.
Краткие теоретические сведения
Свойство Canvas графических объектов
У ряда объектов из библиотеки визуальных компонент есть свойство Canvas (канва), которое предоставляет простой путь для рисования на них. Эти объекты - TBitmap, TComboBox, TDirectoryListBox, TDrawGrid, TFileListBox, TForm, TImage, TListBox, TOutline, TPaintBox, TPrinter, TstringGrid и др.
Canvas является в свою очередь объектом, объединяющим в себе: поле для рисования, карандаш (Pen), кисть (Brush) и шрифт (Font).
Используя Canvas, Вы можете воспроизводить на форме любые графические объекты - картинки, многоугольники, текст и т.п. Однако при этом Вы должны обрабатывать событие OnPaint того объекта, на канве которого Вы рисуете. Рассмотрим подробнее свойства и методы объекта Canvas.
Свойства Canvas:
Brush – кисть, является объектом со своим набором свойств:
Bitmap - картинка размером строго 8x8, используется для заполнения (заливки) области на экране
Color - цвет заливки
Style - предопределенный стиль заливки; это свойство конкурирует со свойством Bitmap - какое свойство Вы определили последним, то и будет определять вид заливки
Font – шрифт, которым выводится текст (метод TextOut)
Pen – карандаш, определяет вид линий; как и кисть (Brush) является объектом с набором свойств:
Color - цвет линии,
Style - стиль вывода: линия, пунктир и др.
Width - ширина линии в точках
PenPos – текущая позиция карандаша, карандаш рекомендуется перемещать с помощью метода MoveTo, а не прямой установкой данного свойства
Pixels – двухмерный массив элементов изображения (pixel), с его помощью Вы получаете доступ к каждой отдельной точке изображения (см. пример к данному уроку).
Методы Canvas:
Методы для рисования простейшей графики – Arc, Chord, LineTo, Pie, Polygon, PolyLine, Rectangle, RoundRect. При прорисовке линий в этих методах используются карандаш (Pen) канвы, а для заполнения внутренних областей - кисть (Brush).
Методы для вывода картинок на канву – Draw и StretchDraw, В качестве параметров указываются прямоугольник и графический объект для вывода (это может быть TBitmap, TIcon или TMetafile). StretchDraw отличается тем, что растягивает или сжимает картинку так, чтобы она заполнила весь указанный прямоугольник (см. пример к данному уроку).
Методы для вывода текста – TextOut и TextRect. При выводе текста используется шрифт (Font) канвы. При использовании TextRect текст выводится только внутри указанного прямоугольника. Длину и высоту текста можно узнать с помощью функций TextWidth и TextHeight.
Объект TPaintBox
На странице System Палитры Компонент есть объект TPaintBox, который можно использовать для построения приложений типа графического редактора или, например, в качестве места построения графиков.
Никаких ключевых свойств, кроме Canvas, TPaintBox не имеет, собственно, этот объект является просто канвой для рисования. Важно, что координаты указателя мыши, передаваемые в обработчики соответствующих событий (OnMouseMove и др.), являются относительными, т.е. это смещение мыши относительно левого верхнего угла объекта TPaintBox, а не относительно левого верхнего угла формы.
Рисование на форме или на компоненте PaintBox
У формы и у компонента PaintBox (страница System палитры компонентов) есть свойство Canvas. Это свойство представляет собой растровое изображение, на котором можно рисовать или в которое можно загрузить рисунок. Свойство Canvas доступно только во время работы приложения и содержит вложенные в него свойства и методы:
Canvas.Brush – свойство фона (кисти). Для фона можно задать цвет с помощью свойства Color:
Canvas.Brush.Color:=Цвет;
С помощью свойства Canvas.Brush можно в качестве фона установить рисунок. Для этого используется свойство Canvas.Brush.Bitmap, которому нужно присваивать переменную с растровым рисунком.
Canvas.Pen – свойство пера. Для пера можно задать толщину с помощью свойства Width:
Canvas.Pen.Width:=Толщина_в_точках;
Можно задать цвет с помощью свойства Color:
Canvas.Pen.Color:=Цвет;
Canvas.MoveTo(x,y) – метод, который устанавливает перо в заданную точку, где Х и У – координаты точки относительно компонента PaintBox. Начало координат, точка [0,0], находится в верхнем левом углу. После этой команды перо установлено, но точка не нарисована. Чтобы провести линию от текущего положения пера до заданной точки, используется метод Canvas.LineTo(x,y).
Чтобы поставить точку определенного цвета на холсте, используется метод
Canvas.Pixels(x,y):=Цвет_точки;
Контрольные вопросы (допуск к работе)
Для чего используется свойство визуальных компонентов Canvas?
Каковы основные свойства Canvas?
Каковы основные методы Canvas?
Для чего используется визуальный компонент TPaintBox?
Задание
Разработать проект простейшего графического редактора.