Разработка программы, аналога Paint системы Windows, с функциями открытия изображения в графическом редакторе и его сохранения, написания текста в любом указанном мышкой месте, изменения шрифта, размера и цвета текста на языке программирования Delphi.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.04.2014 |
по дисциплине Информатика
Delphi: разработать программу простейшего графического редактора
Разработать программу простейшего графического редактора (аналог программы Paint системы Windows). Он должен писать текст в канве компонента TraintBox в указанном мышкой месте. Предусмотреть возможность изменения цвета, размера, типа шрифта, сохранения рисунка в графическом файле.
1. Структура программы
1.2 Основные составляющие
2. Структурные схемы алгоритма решения задачи
3. Текст программы
4. Работоспособность программы
Список использованной литературы
Программирование — это процесс создания компьютерных программ. В наши дни такая деятельность приветствуется, практически, во всех сферах. Элементарная бегущая строка, которую показывают по телевизору — и та создаётся с помощью программирования, не говоря уже о программах для работы в самых различных сферах деятельности. Также с помощью программирования можно создать графический редактор. Именно этому и посвящена данная курсовая работа.
Для выполнения задач курсовой работы я решил использовать среду программирования Delphi7. Мой выбор обусловлен наиболее простым и понятным в использовании интерфейсом программы.
Цели и задачи работы.
1) Освоение программирования;
2) Понимание структуры задачи, её построения;
3) Изучение какого-либо языка программирования. В данном случае — это язык Delphi;
4) Выявление ошибок в программировании и их устранение.
программа графический редактор delphi
1. Структура программы
Программа представляет собой аналог графического редактора Paint в системе Windows с урезанными функциями, написана на языке программирования Delphi в программе Borland Delphi7. Программа предусматривает возможности:
1) открытие изображения в графическом редакторе;
2) сохранение изображения;
3) написание текста в любом указанном мышкой месте;
4) изменение шрифта, размера и цвета текста;
1.2 Основные составляющие
PaintBox — область, на которой производятся все основные действия программы.
Image — область, в которую помещается открываемое изображение.
Panel 1 — панель инструментов.
MainMenu — главное меню.
SpeedButton — быстрая кнопка с изображением инструмента набора текста. С помощью нее можно ввести текст в любой выбранной области.
SpeedButton — быстрая кнопка с изображением карандаша. С ее помощью можно выполнить рисунок.
OpenPicture — диалог открытия изображения.
SavePicture — диалог сохранения изображения.
FontDialog — диалог выбора размера, вида и цвета текста
2. Структурные схемы алгоритма решения задачи
3. Текст программы
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ColorGrd, StdCtrls, Spin, ExtCtrls, Menus, Buttons, ExtDlgs;
Приложение выполняет следующие функции:
Установка основного и дополнительного цветов. Щелчок на панели цветов левой кнопкой мыши устанавливает основной цвет, а щелчок правой кнопкой – дополнительный.
Кисть – кнопка SBBrush . Закрашивает замкнутую область, ограниченныю цветом того пикселя, который указан щелчком мыши. При щелчке левой кнопкой закрашивание производится основным цветом, при щелчке правой кнопкой – вспомогательным.
Индикация цвета -кнопка SBColor . В этом режиме можно указать курсором мыши любой пиксель на изображении и, щелкнув левой кнопкой, установить цвет этого пикселя как основной, а щелкнув правой кнопкой мыши, установитьего как вспомогательный цвет.
Отмена операций, выполненных последним использованным инструментом – команда Правка | Отменить.
Открытие графического файла – команда Файл | Открыть ( MOpenClick ) .
Вставка графического изображения типа битовой матрицы
8. OnMouseDown – это основной код, осуществляющий как установку основного и вспомогательных цветов, так и функцию инструмента графического редактора – кисти.
Если кнопка мыши нажата на палитре цветов, Image 4, или если кнопка SBColor – кнопка указателя цвета утоплена , то приложение находится в режиме установки цветов. При нажатой левой кнопки мыши цвет пикселя под курсором мыши передается в окно основного цвета, а при нажатой правой кнопки – в окно вспомогательного цвета.
Если кнопка мыши нажата на холсте, Image 3, или если кнопка SBColor – кнопка указателя цвета утоплена , то приложение находится в режиме закраски указанной области рисунка. В этом случае в зависимости от нажатой кнопки мыши выбирается основной или вспомогательный цвет и функцией FloodFill производится закраска области, координаты внутренней точки которой указаны курсором мыши, а цвет – цветом пикселя, на который указывает мышь.
Дополнительные функции графического редактора:
Выделение фрагмента – кнопка SBRect . Фрагмент выделяется точечной рамкой. Выделенный фрагмент можно в дальнейшем перетащить мышью на другое место. Если в процессе перетаскивания нажата клавиша Ctrl , то производится копирование фрагмента, в противном случае вырезание, при котором область первоначального размещения фрагмента закрашивается вспомогательным цветом. Выделенный фрагмент может быть также скопирован или вырезан в буфер обмена Clipboard соответствующими командами меню.
Рисование прямоугольника – кнопка SBRectang . Рисуется прямоугольная рамка основным цветом.
Начало режимов рисования заполненного и незаполненного прямоугольников про-исходит по событию onMouseDown и их продолжение по событиям onMouseMove и не отличаются от рассмотренного режима выделения фрагмента.;При завершении формирования пользователем прямоугольной рамки, т.е. при собы-тии MouseUp, надо нарисовать прямоугольник. ;Рисование заполненного прямоугольника осуществляется операторами: Рисование незакрашенного прямоугольника осуществляется операторами: Рисование заполненного прямоугольника – кнопка SBFillRec . Рисуется прямоугольная рамка основным цветом и прямоугольник внутри закрашивается вспомогательным цветом.
Возможные значения свойства Mode пера Pen
Начало рисования прямой линии осуществляется по событию onMouseDown:
Рисование прямой линии – кнопка SBLine.Рисуется прямая линия основным цветом.
Продолжение рисования прямой линии осуществляется по событию onMouseMove: Заключительные операции при событии MouseUp аналогичны рассмотренным выше, но дополняются переводом пера в режим pmCopy, при котором рисуется окончатель-ная линия: Карандаш – кнопка SBPen. Можно рисовать произвольную кривую основным цветом. Glyph:=..ImagesButonspencil.bmp
При реализации этого инструмента в виде: линия распадется на отдельные точки, так как курсор мыши перемещаетяс быстро и события onMouseMove происходят вовсе не при перемещении на соседний пик-сель. Линию,оставляемую курсором тоже нужно рисовать методом LineTo, помес-тив в обработчик события onMouseMove оператор: Стирание изображения (ластик) – кнопка SBErase. Перемещение ластика закрашивает область под ним во вспомогательный цвет.
Ластик реализуется методом FillRect, очищающим изображение под его рамкой.
Сохранение файла осуществляется с использованием компонента SavePictureDialog оператором: Сохранение изображения в графическом файле – команда Файл/Сохранить как…
Копированию или вырезанию подлежит ранее выделенный пользователем объект, местоположение и размеры которого определяются переменной R. Поэтому сначала создается временный объект типа TBitMap, в который переносится копируемый фрагмент. Затем объект копируется в ClipBoard. Копирование или вырезание выделенного фрагмента изображения в буфер обмена Clipboard – команды Правка|Копировать или Правка|Вырезать
Чтение из ClipBoard осуществляется методом LoadFromClipBoardFormat. Предусмотрен перехват исключения EInvalidGraphic, если в ClipBoard содержится не битовая матрица: Вставка графического изображения типа битовой матрицы из буфера обмена Clipboard – команды Правка|Вставить.
Попробуйте усовершенствовать редактор, добавив в него, например, выбор ширины линий, рисование эллипсов и т.д.
Далее приведен полный текст дополнений к редактору представленному в части 1:
В класс TForm1 добавить:
Создание полотна и карандаша
- Создадим новый проект, а внутри проекта форму Form1.
На форме разместим элемент Image (панель Additional). Это будет холст для рисования.
Создадим в модуле глобальную переменную d логического типа. Она будет показывать опущен ли в данный момент карандаш на полотно или нет.
Создадим обработчик события «показ формы», который при выводе формы на экран будет очищать холст. Для этого переведем мышкой фокус на форму и перейдем на панель «Object Inspector». Событие относится к объекту Form1. Оно называется onShow. За этим событием закрепим обработчик – процедуру FormShow. Текст обработчика будет следующим:
Создадим еще три обработчика событий к объекту Image1.:
- Событие onMouseDown (мышь опущена) — глобальной переменной d присваивается значение Истина, а карандаш останавливается в той координате, где находится мышь;
- Событие onMouseMove (мышь перемещается) – карандаш оставляет след на холсте при условии, что мышь опущена (то есть переменная d истина);
- Событие onMouseUp (мышь поднята) – глобальной переменной d присваивается значение Ложь.
Попробуй обратиться за помощью к преподавателям
Задай вопрос специалистам и получи
ответ уже через 15 минут!
После компиляции этого кода должна открываться форма с полотном, на котором мышка при удержании левой кнопки оставляет черный след.
Создание кнопки «очистить», выбор толщины пера и цвета
Добавим на форму элемент Button- кнопка с названием Button1. Создадим на кнопке надпись «Очистить». К событию этой кнопки onClick (нажатие) добавим обработчик, который будет очищать полотно.
Добавим на форму элемент Edit (текстовое поле ) и зададим его свойству Name значение EditSize. В его свойстве Text пропишем значение по умолчанию 1. Добавим к обработчику события onMouseMove строчку
Смысл этого кода в следующем: присвоить свойству «толщина карандаша» то значение, которое находится в текстовом поле с именем EditSize. Но это значение имеет строковый тип, потому предварительно его нужно преобразовать в целое функцией StrToInt().
Добавим на форму элемент «палитра» — ColorDialog (панель Dialogs). Зададим свойству палитры Name значение ColorBox1. Добавим в обработчик события onMouseMove еще одну строку: image1.Canvas.Pen.Color:=ColorBox1.Selected;
Смысл этого кода в следующем: присвоить свойству карандаша «цвет», то значение, которое выбрано на палитре. Окончательно обработчик будет выглядеть, как показано на Листинге 7.
Сохранение изображения
Добавим на элемент Image1 элемент SaveDialog (панель Dialogs). В свойстве этого элемента DefaultExt установим *.bmp. А в свойстве Filter заполним таблицу Filter Editor, как показано на рисунке. Это нужно для того, чтобы рисунки сохранялись в формате BMP.
Добавим на форму кнопку с надписью «Сохранить» и привяжем к событию этой кнопки onClick процедуру, показанную на Листинге 8.
После компиляции графический редактор будет выглядеть, как показано на рисунке. Толщину линии и цвет можно выбирать, а готовое изображение сохранять нажатием на кнопку «Сохранить».
Так и не нашли ответ
на свой вопрос?
Просто напиши с чем тебе
нужна помощь