
- •Введение
- •Системное проектирование
- •1.1. Описание предметной области
- •1.2. Структура программы
- •1.3. Выбор и обоснование среды разработки
- •Delphi xe
- •3. Разработка программных модулей
- •3.1.Инструменты
- •3.2.Толщина линии
- •3.3. Сохранение
- •4. Программа и методика испытаний
- •4.1. Этапы отладки
- •4.2. Типы ошибок
- •4.3. Функциональное тестирование
- •4.4. Полное тестирование
- •5. Руководство пользователя
- •5.1. Назначение
- •5.2. Требования к программному и аппаратному обеспечению компьютера
- •5.3. Работа с приложениями
- •Заключение
- •Литература
- •Приложение а Листинг программы
- •Interface
- •Img1: tImage;
- •Img2: tImage;
- •Img3: tImage;
- •If fopen then
- •Img1.Canvas.FillRect(img1.Canvas.ClipRect);
- •Img2.Canvas.FillRect(img2.Canvas.ClipRect);
- •Img3.Canvas.FillRect(img3.Canvas.ClipRect);
Заключение
Программа «Графический редактор» реализован с использованием Delphi 7 Borland. В программе предусмотрена создание или редактирование определенного рисунка.
Представленная версия приложения является законченным программным продуктом. Однако она может быть доработана, для чего понадобятся дополнительные средства, а так же время, в течение которого будут исправляться все недочеты.
Программа удобна пользователю, она работает под управлением операционной системы семейства Windows. Использование программы требует лишь элементарных знаний приемов работы с редактированием рисунка.
В результате выполнения проекта усовершенствованы знания в области объектно-ориентированного программирования.
Литература
Криптография [Электронный ресурс]. – Электронные данные. Режим доступа:http://www.chhm.net/index.php?articles=28
Самоучитель C++Builder. Культин.Н.Б. СПб.:БХВ-Питер,2004
Википедия [Электронный ресурс]. – Электронные данные. Режим доступа:http://ru.wikipedia.org/wiki/Шифр_Цезаря
BorlandC++ BuilderВиктор Григорьевич Алексанкин, Наталия Елманова
Антонова, Н. Б. Экономика предприятия: Учебное пособие / Н. Б. Антонова, М. А. Зайцева, Л. Н. Нехорошева, – Мн.: Высшая школа, 2004.
Гигиенические требования к ВДТ, ЭВМ и организации работ – СанПиН, РБ, 2000.
Единая система конструкторской документации (ЕСКД): справ. Пособие / С.С. Борушек [и др.] – М. : Изд-во стандартов, 1989. - 352 c.
Единая система программной документации (ЕСПД) – М. : Изд-во стандартов, 1988. – 143 с.
Приложение а Листинг программы
unit Unit1;
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ColorGrd, ComCtrls, StdCtrls, Buttons, ExtCtrls, Menus, ExtDlgs;
type
TForm1 = class(TForm)
mm1: TMainMenu;
a1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
pnl1: TPanel;
btn1: TSpeedButton;
btn2: TSpeedButton;
btn3: TSpeedButton;
btn4: TSpeedButton;
btn5: TSpeedButton;
btn6: TSpeedButton;
btn7: TSpeedButton;
btn8: TSpeedButton;
edt1: TEdit;
ud1: TUpDown;
pnl2: TPanel;
clrgrd1: TColorGrid;
bvl1: TBevel;
pnl3: TPanel;
pnl4: TPanel;
scrlbx1: TScrollBox;
Img1: tImage;
stat1: TStatusBar;
dlgOPic1: TOpenPictureDialog;
dlg1: TSavePictureDialog;
lbl1: TLabel;
Img2: tImage;
Img3: tImage;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
rb1: TRadioButton;
rb2: TRadioButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure ud1Click(Sender: TObject; Button: TUDBtnType);
procedure clrgrd1Change(Sender: TObject);
procedure btn1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure btn2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure btn3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure btn4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure btn5MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure btn6MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure btn7MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure btn8MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure edt1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure clrgrd1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure pnl4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure pnl3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure img1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure edt1Change(Sender: TObject);
procedure img1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btn5Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure btn6Click(Sender: TObject);
procedure btn8Click(Sender: TObject);
procedure btn7Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure img1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
x1,y1,
x2,y2,
fat : integer;
mb : char;
flag,
front : integer;
fname : string;
backp,
nextp,
fopen,
fsave : boolean;
implementation
uses Unit2, Unit3, Unit4;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
fsave := true;
img1.Canvas.FillRect(img1.Canvas.ClipRect);
img2.Canvas.FillRect(img2.Canvas.ClipRect);
img3.Canvas.FillRect(img3.Canvas.ClipRect);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
img1.AutoSize := true;
fopen := true;
dlgOPic1.Execute;
img1.Picture.LoadFromFile(dlgOPic1.FileName);
fname := dlgOPic1.FileName;
img1.AutoSize := false;
end;
procedure TForm1.ud1Click(Sender: TObject; Button: TUDBtnType);
begin
if not btn5.Down then
begin
front := StrToInt(edt1.Text);
if front <> 0 then
begin
if Button = btprev then
begin
dec(front);
if front = 0 then
front := 1;
edt1.Text := IntToStr(front);
end;
if Button = btnext then
begin
Inc(front);
edt1.Text := IntToStr(front);
end;
end;
end;
end;
procedure TForm1.clrgrd1Change(Sender: TObject);
begin
pnl4.Color := clrgrd1.ForegroundColor;
pnl3.color := clrgrd1.BackgroundColor;
end;
procedure TForm1.btn1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].Text := 'Стирание части рисунка с помощью '+
'ластика выбраного цвета';
end;
procedure TForm1.btn2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].Text := 'Заполнение области одним из текущих цветов';
end;
procedure TForm1.btn3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].text := 'Выбор цветов из имеющихся на рисунке';
end;
procedure TForm1.btn4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.panels[0].text := 'Проведение прямой линии выбраной толщины';
end;
procedure TForm1.btn5MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].Text := 'Проведение произвольной линии толщиной в одну точку';
end;
procedure TForm1.btn6MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.panels[0].text := 'Рисование кистью выброной толщины';
end;
procedure TForm1.btn7MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].Text := 'Рисование эллипса';
end;
procedure TForm1.btn8MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].text := 'Рисование прямоугольника';
end;
procedure TForm1.edt1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].text := 'Выбор толщины ';
end;
procedure TForm1.clrgrd1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].Text := 'Выбор цветов';
end;
procedure TForm1.pnl4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].Text := 'Цвет левой кнопки мыши';
end;
procedure TForm1.pnl3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].Text := 'Цвет правой кнопки мыши';
end;
procedure TForm1.img1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
stat1.Panels[0].Text := 'Область для рисования';
stat1.Panels[1].text := 'x:'+inttostr(x)+ ' y:'+inttostr(y);
if ((ssRight in Shift) or (ssLeft in Shift)) then
begin
fsave := false;
backp := true;
nextp := false;
if btn1.Down then
begin
img1.Canvas.Pen.color:=pnl3.Color;
img1.Canvas.pen.Width:=strtoint((edt1.text));
Img1.Canvas.lineto(x,y);
end;
if btn5.down then
begin
if mb = 'l' then
img1.Canvas.Pen.Color := pnl4.Color
else
img1.Canvas.Pen.Color := pnl3.Color;
img1.Canvas.LineTo(x,y);
end;
if btn6.Down then
begin
img1.canvas.Pen.Width := strtoint(edt1.Text);
if mb = 'l' then
img1.Canvas.Pen.Color := pnl4.Color
else
img1.Canvas.Pen.Color := pnl3.Color;
img1.canvas.lineto(x,y);
end;
if btn4.down then
begin
img1.picture.Assign(img2.picture);
if mb = 'l' then
Img1.Canvas.Pen.color := pnl4.Color
else
Img1.Canvas.Pen.color := pnl3.Color;
Img1.Canvas.Pen.width := strtoint(edt1.text);
Img1.Canvas.moveto(x,y);
Img1.Canvas.lineto(x1,y1);
end;
if btn7.Down then
begin
img1.picture.Assign(img2.picture);
img1.Canvas.pen.Width := strtoint(edt1.text);
if mb = 'r' then
img1.Canvas.Pen.color := pnl3.Color
else
Img1.Canvas.Pen.color := pnl4.color;
if rb1.checked = true then
img1.Canvas.Brush.Style := bsClear
else
img1.Canvas.Brush.Style := bsSolid;
Img1.Canvas.ellipse(x,y,x1,y1);
end;
if btn8.Down then
begin
img1.picture.Assign(img2.picture);
img1.Canvas.pen.Width := strtoint(edt1.text);
if mb = 'r' then
img1.Canvas.Pen.color := pnl3.Color
else
Img1.Canvas.Pen.color := pnl4.color;
if rb1.Checked = true then
img1.Canvas.Brush.Style := bsClear
else
img1.Canvas.Brush.Style := bsSolid;
img1.Canvas.Rectangle(x,y,x1,y1);
end;
end;
x2 := x;
y2 := y;
end;
procedure TForm1.img1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if btn2.Down then
begin
if button = mbRight then
Img1.Canvas.brush.color := pnl3.Color
else
Img1.Canvas.brush.color := pnl4.Color;
Img1.Canvas.FloodFill(x, y,Img1.Canvas.Pixels[x,y], fssurface);
end;
if btn3.Down then
begin
if button = mbRight then
pnl3.Color := Img1.Canvas.pixels[x,y]
else
pnl4.color := Img1.Canvas.pixels[x,y];
end;
end;
procedure TForm1.img1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
img2.picture.Assign(img1.Picture);
x1 := x;
y1 := y;
if button = mbRight then
mb := 'r'
else
mb := 'l';
img1.Canvas.MoveTo(x,y);
Img1MouseMove(Sender,Shift,X,Y);
end;
procedure TForm1.edt1Change(Sender: TObject);
begin
fat := strtoint(edt1.text);
if not btn5.Down then
img1.Canvas.Pen.Width := fat;
end;
procedure TForm1.btn5Click(Sender: TObject);
begin
img1.Canvas.Pen.Width := 1;
lbl1.Visible := false;
edt1.Visible := false;
rb1.Visible := false;
rb2.Visible := false;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
if backp = true then
begin
img3.picture.Assign(img1.Picture);
img1.picture.Assign(img2.Picture);
nextp := true;
end;
backp := false;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
if nextp = true then
begin
img2.Picture.Assign(img1.Picture);
img1.Picture.Assign(img3.Picture);
backp := true;
end;
nextp := false;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
img1.Picture := nil;
img1.Canvas.FillRect(img1.Canvas.ClipRect);
img2.Picture := nil;
img2.Canvas.FillRect(img2.Canvas.ClipRect);
img3.Picture := nil;
img3.Canvas.FillRect(img3.Canvas.ClipRect);
backp := false;
nextp := false;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
Form2.ShowModal;
end;
procedure TForm1.btn6Click(Sender: TObject);
begin
lbl1.Visible := true;
edt1.Visible := true;
ud1.Visible := true;
rb1.Visible := false;
rb2.Visible := false;
end;
procedure TForm1.btn8Click(Sender: TObject);
begin
lbl1.Visible := true;
edt1.Visible := true;
ud1.Visible := true;
rb1.Visible := true;
rb2.Visible := true;
end;
procedure TForm1.btn7Click(Sender: TObject);
begin
lbl1.Visible := true;
edt1.Visible := true;
ud1.Visible := true;
rb1.Visible := true;
rb2.Visible := true;
end;
procedure TForm1.btn4Click(Sender: TObject);
begin
lbl1.Visible := true;
edt1.Visible := true;
ud1.Visible := true;
rb1.Visible := false;
rb2.Visible := false;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
lbl1.Visible := true;
edt1.Visible := true;
ud1.Visible := true;
rb1.Visible := false;
rb2.Visible := false;
end;
procedure TForm1.btn3Click(Sender: TObject);
begin
lbl1.Visible := true;
edt1.Visible := true;
ud1.Visible := true;
rb1.Visible := false;
rb2.Visible := false;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
lbl1.Visible := true;
edt1.Visible := true;
ud1.Visible := true;
rb1.Visible := false;
rb2.Visible := false;
end;
procedure TForm1.N3Click(Sender: TObject);
var
bmp: TBitmap;
begin