Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник ПППН_ОАиП_Delphi_ПО_2005-2006.doc
Скачиваний:
38
Добавлен:
19.08.2019
Размер:
3.77 Mб
Скачать

Практическая работа № 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):=Цвет_точки;

Контрольные вопросы (допуск к работе)

  1. Для чего используется свойство визуальных компонентов Canvas?

  2. Каковы основные свойства Canvas?

  3. Каковы основные методы Canvas?

  4. Для чего используется визуальный компонент TPaintBox?

Задание

Разработать проект простейшего графического редактора.