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