- •«Озерский технический колледж» Курсовой проект в сфере разработки «Delphi» Разработка программы "Графический редактор"
- •1. Теоретические основы разработки программных продуктов
- •1.1 Понятие жцпо и виды моделей разработки программного продукта
- •Каскадная модель
- •Модель прототипирования
- •Многопроходная модель
- •Спиральная модель
- •1.2 Краткий обзор средств разработки по
- •Структурное программирование
- •2. Условная конструкция
- •3. Блок обобщенного цикла
- •Объектно-ориентированное программирование
- •1.3 Этапы разработки программных продуктов
- •2. Разработка программы «Графический редактор»
- •2.1 Постановка задачи и разработка спецификации на задачу
- •Спецификация
- •2.2 Разработка модели задачи
- •2.3 Проектирование
- •2.4 Отладка и тестирование программы
- •2.5 Документирование программы
- •2.5.1 Описание применения
- •2.5.2 Руководство программиста
- •2.5.3 Руководство оператора (или пользователя)
- •Заключение
- •Список литературы
- •Приложение 1
- •Размещено на Allbest.Ru
2.5.3 Руководство оператора (или пользователя)
Назначение программы
Программа предназначена для просмотра и демонстрации свойств графических компонентов. Пользователю представлен упрощенный вариант работы для просмотра и изучения.
Выполнение программы
Последовательность действий оператора (пользователя):
Запуск программы (щелкнуть по значку "Project1")
После этого должна, появится главная форма с кнопками
Заключение
Целью моей курсовой работы была разработка программы «Графический редактор», которая позволяет пользователю просматривать и редактировать графические изображения.
В результате создана программа, которая позволяет осуществлять создание и редактирование графических изображений.
Программа имеет прикладной характер и может использоваться для самостоятельной работы студентами при изучении среды ООП Delphi.
Список литературы
1.Васюков В.Н. Цифровая обработка сигналов и сигнальные процессоры в системах подвижной радиосвязи: Учебник для вузов Учебники НГТУ. 2003 – 235 с.
2.Вендров А.М. Проектирование программного обеспечения для экономических систем. М.: Финансы и статистика, 1999.
3.Головин О. В., Чистяков Н. И., Шварц В., Хардон Агиляр И. Радиосвязь. Под ред. проф. О. В. Головина. М., Горячая линия - Телеком, 2001
4.Культин Н.Б. Программирование в Turbo Pascal и Delphi.- СПб.: БХВ - Санкт-Петербург, 2000.
5.Симонович С., Евсеев Г., Алексеев А. Специальная информатика. Учебное пособие. – М.: АСТ – ПРЕСС: Инфорком – Пресс, 1998.
6.Семакин И.Г., Шестаков А.П. Основы программирования: Учебник.- М.: Мастерство, 2002.
7.Рудаков. Технология разработки программных продуктов. Учебное пособие, 2007.
8.Процессы жизненного цикла программных средств. Информационная технология. ГОСТ Р ИСО/МЭК 12207-99, М.: Госстандарт России, 2000.
9.Схемы алгоритмов и программ. Правила выполнения. ГОСТ 19.002-80. М.: Госстандарт России , 1980.
Приложение 1
Рис. 1. Главная форма
1) Первоначально я разместил на форме два компонента Shape для отображения основного и вспомогательного цветов, компонент Image для отображения палитры десяти цветов и еще один компонент Image в качестве холста для картинок.
2) Разместил на форме компонент MainMenu, и сделал вкладки, ещё разместил диалоги: OpenPictureDialog, SavePictureDialog и ColorDialog .
3) В качестве основного и вспомогательных цветов (по умолчанию) установил соответственно синий и белый. Компонент Image1 (палитра цветов) поделил на 20 равных частей и каждую из них окрасил различными цветами. Для этого обработал событие OnCreate формы следующим образом:
Var i,t:Integer;
begin
{присваивание цвета по умолчанию}
Shape1.Brush.Color:=clWhite;
Shape2.Brush.Color:=clBlue;
Image2.Canvas.Brush.Color:=clWhite;
{Деление Image1 на 10 равных частей}
t:=Image1.Width div 20;
{смена ширины палитры}
Image1.Width:=20*t;
{рисование 10 равных прямоугольников}
For i:=0 to 19 do
Begin
Case i of
{выбор цвета ячейки по номеру}
0: Image1.Canvas.Brush.Color:=clBlack;
1: Image1.Canvas.Brush.Color:=clAqua;
2: Image1.Canvas.Brush.Color:=clBlue;
3: Image1.Canvas.Brush.Color:=clFuchsia;
4: Image1.Canvas.Brush.Color:=clGreen;
5: Image1.Canvas.Brush.Color:=clLime;
6: Image1.Canvas.Brush.Color:=clMaroon;
7: Image1.Canvas.Brush.Color:=clRed;
8: Image1.Canvas.Brush.Color:=clYellow;
9: Image1.Canvas.Brush.Color:=clWhite;
10: Image1.Canvas.Brush.Color:=clOlive;
11: Image1.Canvas.Brush.Color:=clNavy;
12: Image1.Canvas.Brush.Color:=clTeal;
13: Image1.Canvas.Brush.Color:=clGray;
14: Image1.Canvas.Brush.Color:=clSilver;
15: Image1.Canvas.Brush.Color:=clMoneyGreen;
16: Image1.Canvas.Brush.Color:=clSkyBlue;
17: Image1.Canvas.Brush.Color:=clCream;
18: Image1.Canvas.Brush.Color:=clPurple;
19: Image1.Canvas.Brush.Color:=clMedGray;
end;
{рисование прямоугольника}
Image1.Canvas.Rectangle(t*i,0,t*i+t,Image1.Height);
end;
Обработал события OnClick для пунктов меню:
Файл – Открыть: открыть графический файл и загрузить его в Image2
If OpenPictureDialog1.Execute then
Image2.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Палитра – Перо: отобразить изменение основного цвета в Shape1
If ColorDialog1.Execute then
Shape1.Brush.Color:=ColorDialog1.Color;
Палитра – Фон: отобразить изменение вспомогательного цвета в Shape2
If ColorDialog1.Execute then
Shape2.Brush.Color:=ColorDialog1.Color;
Обработал событие OnMouseDown компонентов Image1 (палитра) и Image2 (холст).
if Sender=Image1 then
if Button=mbLeft then
Shape1.Brush.Color:=(Sender as TImage).Canvas.Pixels[x,y]
else
Shape2.Brush.Color:=(Sender as TImage).Canvas.Pixels[x,y]
else
if (Sender=Image2) then
with Image2.Canvas do
If sSpeedButton1.Down then
begin
if Button=mbLeft then Brush.Color:=Shape1.Brush.Color
else Brush.Color:=Shape2.Brush.Color;
FloodFill (x,y,Pixels[x,y],fsSurface);
End;
Добавил на форму четыре компонента SpeedButton . Для всех установил свойство GroupIndex=1, а свойство AllowAllUp в состояние true (тогда кнопка будет фиксироваться в нажатом состоянии).
Разместил кнопки вдоль холста для рисования слева и для каждой из кнопок установил свойство Glyph следующим образом:
Для SpeedButton1 (кисть):
C:\Program Files\Borland\Delphi6\Demos\Doc\Graphex\brush.bmp
Для SpeedButton2 (карандаш):
C:\Program Files\Borland\Delphi6\Demos\Doc\Graphex\pen.bmp
Для SpeedButton3 (закрашенный прямоугольник):
C:\Program Files\Borland\Delphi6\Demos\Doc\Graphex\fsolid.bmp
Для SpeedButton4 (линия):
C:\Program Files\Borland\Delphi6\Demos\Doc\Graphex\line.bmp
// если кнопка (карандаш) нажата, то можно рисовать
else
If sSpeedButton2.Down then
begin
Pen.Color:=Shape1.Brush.Color;
Moveto(x,y);
end
//рисование линии
else
If sSpeedButton4.Down then
begin
//запоминаем положение курсора
x0:=x;
y0:=y;
x1:=x;
y1:=y;
//устанавливаем цвет пера
Pen.Color:=Shape1.Brush.Color;
//устанавливаем режим пера - при движении мыши стирать изображение линии}
Pen.Mode:=pmNotXor;
end
Else If sSpeedButton3.Down Then
Begin
Pen.Color:=Shape1.Brush.Color;
x01:=x;
y01:=y;
x02:=x;
y02:=y;
Pen.Mode:=PMNotXor;
end;
end;
procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
//после движения мыши остается след
If sSpeedButton2.Down then
If Shift=[ssleft] then
Image2.Canvas.LineTo(x,y);
If sSpeedButton4.Down then
If Shift=[ssLeft] Then
with Image2.Canvas do
Begin
{стирание прежней линии}
MoveTo (x0,y0);
LineTo (x1,y1);
{рисование новой линии}
MoveTo (x0,y0);
LineTo (x,y);
x1:=x;
y1:=y;
end;
If sSpeedButton3.Down Then
If Shift=[ssLeft] Then
With Image2.Canvas Do
Begin {рисуем прямоугольник}
Rectangle(x01,y01,x02,y02);
x02:=x;
y02:=y;
Rectangle(x01,y01,x,y);
End;
end;
procedure TForm1.Image2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If sSpeedButton4.Down Then
Begin
Image2.Canvas.Pen.Mode:=PMCopy;
Image2.Canvas.MoveTo(x0,y0);
Image2.Canvas.LineTo(x,y);
end;
If sSpeedButton3.Down Then
Begin
Image2.Canvas.Brush.Color:=Shape2.Brush.Color;
Image2.Canvas.Pen.Mode:=PMCopy;
Image2.Canvas.Rectangle(x01,y01,x,y);
end;
end;
end.
