ООП на Delphi – 13: Графика на Delphi

Содержание

Слайд 2

Объектно – ориентированное программирование на DELPHI - 13 @ Краснополянская школа

Объектно – ориентированное программирование на
DELPHI - 13

@ Краснополянская школа №

1 Домнин Константин Михайлович 2006 год
Слайд 3

На этом уроке: Мы познакомимся с компонентами для работы с графикой

На этом уроке:
Мы познакомимся с компонентами для работы с

графикой и создадим свой графический редактор

DELPHI - 13

Вопросы:
1. Введение в графику
2. Создаем свой графический редактор

Слайд 4

Объектно – ориентированное программирование на DELPHI - 13 Введение в графику

Объектно – ориентированное программирование на DELPHI - 13

Введение в графику

Слайд 5

Введение в графику Для работы с графикой в Delphi есть много

Введение в графику

Для работы с графикой в Delphi есть много

средств. Рассмотрим некоторые из них.
У многих объектов Delphi есть свойство Canvas, что в переводе означает холст. Если у объекта имеется такое свойство, то это значит, что на нем можно рисовать. (Заметим, что работая в любой программе, да и в самой операционной системе Windows, мы видим только графику – все кнопочки, окна, инструменты … это всего лишь нарисованные, например на форме объекты (вернее их картинки) и при нажатии на кнопку она перерисовывается, показываясь нажатой)

Для рисования в Delphi есть два основных инструмента:
Pen (карандаш) – для рисования линий
Brush (кисть) – для раскраски объектов
У каждого из этих инструментов есть дополнительные свойства ( например цвет карандаша, толщина линии, тип линии )

Слайд 6

Введение в графику Рассмотрим рисование линий, прямоугольников, эллипсов: Линия Сначала откроем

Введение в графику

Рассмотрим рисование линий, прямоугольников, эллипсов:
Линия
Сначала откроем событие

для формы – OnPaint и запишем там код:

Устанавливаем цвет карандаша - красный

Устанавливаем толщину карандаша в 5 пикселей

Устанавливаем карандаш в точку с координатами 10,20

Проводим линию до точки с координатами 200,20

Слайд 7

Введение в графику Рассмотрим рисование линий, прямоугольников, эллипсов: Линия Проводим зеленую

Введение в графику

Рассмотрим рисование линий, прямоугольников, эллипсов:
Линия

Проводим зеленую линию


Проводим синюю линию

В результате мы получаем на форме следующую картинку:

Слайд 8

Введение в графику Рассмотрим рисование линий, прямоугольников, эллипсов: 2. Прямоугольник, эллипс

Введение в графику

Рассмотрим рисование линий, прямоугольников, эллипсов:
2. Прямоугольник, эллипс

Выбираем произвольный цвет и рисуем прямоугольник

В результате мы получаем на форме следующую картинку:

Выбираем произвольный цвет и рисуем эллипс

Посмотреть ->

Слайд 9

Объектно – ориентированное программирование на DELPHI - 13 Создаем свой графический редактор

Объектно – ориентированное программирование на DELPHI - 13

Создаем свой графический

редактор
Слайд 10

Создаем свой графический редактор А сейчас, используя средства Delphi, попробуем создать

Создаем свой графический редактор

А сейчас, используя средства Delphi, попробуем создать

графический редактор наподобие Paint (конечно менее функциональный), однако умеющий следующее:
Рисовать линии, прямоугольники, эллипсы и просто карандашом
Делать заливку фигур цветом
Использовать ластик
Выбирать толщину и цвет линий
Открывать графические файлы и сохранять нарисованное
Рассмотрим создание редактора по шагам:
Слайд 11

Создаем свой графический редактор ШАГ 1 Откроем Delphi разместим на форме

Создаем свой графический редактор

ШАГ 1

Откроем Delphi разместим на форме следующие элементы:

Компонент MainMenu

Сформируем следующее меню программы:

Слайд 12

Создаем свой графический редактор ШАГ 1 Откроем Delphi разместим на форме

Создаем свой графический редактор

ШАГ 1

Откроем Delphi разместим на форме следующие элементы:

Компонент OpenPictureDialog для открытия изображений

Компонент SavePictureDialog для сохранения рисунков

Манифест XP для стильности

Компонент ColorDialog для выбора цвета рисования

Слайд 13

Создаем свой графический редактор ШАГ 1 Откроем Delphi разместим на форме

Создаем свой графический редактор

ШАГ 1

Откроем Delphi разместим на форме следующие элементы:

Компонент ToolBar (инструментальная панель для размещения кнопок)

7 кнопок (SpeedButton) для выбора инструмента рисования. Нанесем на кнопки картинки

SpinEdit для выбора толщины линии
В свойствах установим min толщину линии – 1 (пикс), а max - 20

Сделаем так, чтобы из всех кнопок нажатой могла быть только одна (при нажатии любой кнопки остальные становились отжатыми). Для этого выделяем все кнопки. Установим свойство выделенных элементов AllowAllUp в значение True.Свойство GroupIndex поставим равным 1. Свойство Down для всех кнопок должно быть равно False, только для отжатой кнопки инструмента карандаш свойство Down должно быть равно True.

Слайд 14

Создаем свой графический редактор ШАГ 1 Откроем Delphi разместим на форме

Создаем свой графический редактор

ШАГ 1

Откроем Delphi разместим на форме следующие элементы:

Размещаем на форме компонент ScrollBox, на который ложим компонент Image
(ScrollBox – это подложка для Image. Зададим ему белый цвет и растянем его на все свободное место)
У элемента Image свойство Align сделаем в AlClient, чтобы он вписался полностью в ScrollBox, а свойство Stretch –в True
Слайд 15

Создаем свой графический редактор ШАГ 2 Займемся описанием событий: Сначала давайте

Создаем свой графический редактор

ШАГ 2

Займемся описанием событий:

Сначала давайте подумаем, какие

события возникают, когда мы рисуем. Ясно, что почти все мы делаем мышкой. Например для рисования линии мы ставим курсор в какое-то место, нажимаем левую кнопку мыши, перемещаем мышь до нужного места и отпускаем ее.
Таким образом в процессе рисования мы используем 3 основных события:
OnMouseDown (нажатие кнопки мыши)
On MouseMove (перемещение мыши)
OnMouseUp (отпускание кнопки мыши)

Рисование карандашом

При нажатии на кнопку (OnMouseDown) карандаш должен встать на точку с координатами курсора , при перемещении мыши с нажатой клавишей (On MouseMove ) должна рисоваться линия, при отпускании кнопки мыши (OnMouseUp) должно прекратиться рисование.
Поэтому для рисования карандашом необходим код в каждом из событий для мыши OnMouseDown, On MouseMove, OnMouseUp.

Слайд 16

Создаем свой графический редактор ШАГ 2 Рассмотрим код рисования карандашом: Введем

Создаем свой графический редактор

ШАГ 2

Рассмотрим код рисования карандашом:

Введем переменную логического

типа r – это своеобразное разрешение/запрет на рисование. Если r – true, то рисовать можно, иначе нельзя.
Зачем это?
Мы можем перемещать мышь (MouseMove) с нажатой или отпущенной клавишей: в первом случае должно рисоваться (r=true), а во втором не должно (r=false)

При нажатии кнопки мыши даем добро на рисование

Если нажата кнопка рисования карандашом, то на Image переходим к точке с координатами курсора

(Нажатие кнопки мыши - MouseDown)

Слайд 17

Создаем свой графический редактор ШАГ 2 Рассмотрим код рисования карандашом: Проверяем,

Создаем свой графический редактор

ШАГ 2

Рассмотрим код рисования карандашом:

Проверяем, разрешено ли

рисовать

Если рисовать можно и нажата кнопка рисования карандашом, то устанавливаем цвет карандаша, соответствующий выбранному в ColorDialoge и проводим линию

(Перемещение мыши - MouseMove)

Слайд 18

Создаем свой графический редактор ШАГ 2 Рассмотрим код рисования карандашом: Проводим

Создаем свой графический редактор

ШАГ 2

Рассмотрим код рисования карандашом:

Проводим линию до

координаты отпускания мыши и устанавливаем запрет на рисование

(Отпускание мыши - MouseUp)

Слайд 19

Создаем свой графический редактор ШАГ 3 Стирание с помощью ластика Что

Создаем свой графический редактор

ШАГ 3

Стирание с помощью ластика

Что мы делаем

при стирании ластиком? На самом-то деле мы ничего не стираем, а рисуем точно так же, как и карандашом, только белым цветом. Получается эффект стирания.
Это значит, что при нажатии кнопки ластика ему присваивается цвет белый, толщина линии берется из значения SpinEdita, а код рисования точно такой же.

ШАГ 4

Не будем вдаваться в подробности рисования прямоугольника, эллипса и заливки фигур – здесь используются соответствующие методы Canvas: Rectangle, Ellipse, FloodFill – посмотрите внимательно код, соответствующий этим операциям в примере, приложенном к презентации

Рисование прямоугольника, эллипса, заливка фигур

Слайд 20

Создаем свой графический редактор ШАГ 5 Выбор цвета При нажатию на

Создаем свой графический редактор

ШАГ 5

Выбор цвета

При нажатию на кнопку цвета

запускается ColorDialog, где мы выбираем нужный цвет и присваиваем его карандашу и кисти
(см. предыдущие уроки о диалогах)
Слайд 21

Создаем свой графический редактор ШАГ 6 Очистка холста Конечно, можно очистить

Создаем свой графический редактор

ШАГ 6

Очистка холста

Конечно, можно очистить рисунок с

помощью ластика, но это долго, поэтому при выборе меню Правка -> Очистить происходит очистка всего холста.
И это опять обман, как и в случае с ластиком. На самом деле мы ничего не очищаем, а рисуем белый прямоугольник размерами чуть больше размера поля рисования – создается эффект очистки

Устанавливаем толщину линии = 1, цвет линии = белый и рисуем прямоугольник с размерами на 5 пикселей больше размеров поля для рисования (Image)

Слайд 22

Создаем свой графический редактор ШАГ 7 Меню Файл -> Создать Цвет

Создаем свой графический редактор

ШАГ 7

Меню Файл -> Создать

Цвет кисти делаем

белым, рисуем прямоугольник чуть больше Image, меняем заголовок формы и устанавливаем начальный цвет карандаша - черный

ШАГ 8

Диалоги рассмотрены нами ранее довольно подробно, поэтому комментарии излишни

Меню Файл -> Открыть

Слайд 23

Создаем свой графический редактор ШАГ 9 Меню Файл -> Сохранить Тоже

Создаем свой графический редактор

ШАГ 9

Меню Файл -> Сохранить

Тоже без комментариев

ШАГ

10

Меню Файл -> Выход – метод Close

ШАГ 11

Меню Помощь -> О программе

Здесь мы должны создать форму «О программе», познакомить с ней форму редактора и открыть методом ShowModal

Слайд 24

Создаем свой графический редактор На этом и остановимся. Давайте запустим наш

Создаем свой графический редактор

На этом и остановимся. Давайте запустим наш редактор

и порисуем.

Порисовать ->

Итак, мы создали свой графический редактор, где использовали графические возможности Delphi, и не только графические – нам пригодились знания из всех прошлых уроков Конечно это очень простой редактор с элементарными функциями. Однако его разработка позволила нам понять суть работы с графикой в Delphi. Ну а дальше можно наращивать его возможности, добавлять новые функции – для этого надо читать литературу по Delphi, разбираться и пробовать.
Мы же на этом закончим наш урок

Слайд 25

На этом уроке мы научились работать с графикой в Delphi и

На этом уроке мы научились работать с графикой в Delphi

и создали свой графический редактор

ИТОГИ УРОКА:

На этом цикл презентаций о программировании в среде Delphi закончен