计算机图形图像处理---实训
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
系统需求分析---------------------------------------------------------------------------------------------3 系统的总体设计------------------------------------------------------------------------------------------3 系统的详细设计------------------------------------------------------------------------------------------4 各模块功能的描述及主要源代码-------------------------------------------------------------------6 系统运行结果---------------------------------------------------------------------------------------------11
●系统需求分析
随着社会的的发展,计算机与人们的生活也越来越密切,计算机的图片处理也成了一件比较普遍的事情,各种计算机图形图像处理系统便产生了;本次开发简单的计算机图形图像处理系统功能简单,使用方便。
主要实现功能需要:
功能主要分为三个模块:
(1)画图模块能实现自定义画图(直线、曲线、圆、矩形)、在画图过程中可以改变画笔
的粗,让画笔变粗的同时我们可以使用按钮是的画笔变细;在画图的同时我们还有橡皮擦功能来擦出画图时你认为画得不好的部分,各种基本的集合图像配合你画图的需要;另外我的设计中还为画图模块添加了新建画板的功能和保存画图的功能;为你保存的画图都将以.bmp格式图片保存。
(2)图片的处理模块能进行简单的对.bmp图片处理,图片涂鸦、图片曝光、图片反色、
图片还原等基本的图片处理功能;在本的系统中没用专门的涂鸦选项,可是在加载图片完成后就可以对图片进行涂鸦功能并为修改后的图片提供了保存功能。
(3)自定义画笔颜色模块能对画笔的颜色进行随意的改变。
●系统的总体设计
本次要使用delphi语言进行开发简单的计算机图形图像处理系统功能简单,在Windows 系统下运行,系统的层次模块图为:
系统的详细设计
系统的外观设计如下图所示:
详细的功能可以由以下的模块功能流程图来表示【1】画图模块
【2】图片处理模块功能流程
各模块的功能描述及功能代码
【1】画图模块:
//实现画图功能
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (ssleft in shift) then
//self.Image1.Canvas.Pen.Color:=clWindowText;
//self.Image1.Canvas.Pen.Width:=10;
begin
if(i<>1)and(i<>2)and(i<>3)and(i<>4)and(i<>5)then
begin
self.Image1.Canvas.MoveTo(x1,y1);
self.Image1.Canvas.LineTo(x,y);
end;
if (ssleft in shift) then
begin
if(i=1) then //随便画线
begin
self.Image1.Canvas.Pen.Color:=ColorGrid1.ForegroundColor;
self.Image1.Canvas.MoveTo(x1,y1);
self.Image1.Canvas.LineTo(x,y);
x1:=x;
y1:=y;
end ;
if(i=2) then //画直线
begin
self.Image1.Canvas.Pen.Color:=ColorGrid1.ForegroundColor;
self.Image1.Canvas.Pen.Mode:=Pmnotxor;
self.Image1.Canvas.MoveTo(x2,y2);
self.Image1.Canvas.LineTo(x1,y1);
self.Image1.Canvas.Pen.Mode:=pmcopy;
self.Image1.Canvas.MoveTo(x2,y2);
self.Image1.Canvas.LineTo(x,y);
end;
if(i=3) then //画圆
begin
self.Image1.Canvas.Pen.Color:=ColorGrid1.ForegroundColor;
self.Image1.Canvas.Pen.Mode:=pmnotxor;
self.Image1.Canvas.Ellipse(x2,y2,x1,y1);
self.Image1.Canvas.Pen.Mode:=pmcopy;
self.Image1.Canvas.Ellipse(x2,y2,x,y);
end;
if(i=4) then //画矩形
begin
self.Image1.Canvas.Pen.Color:=ColorGrid1.ForegroundColor;
self.Image1.Canvas.Pen.Mode:=pmnotxor;
self.Image1.Canvas.Rectangle(x2,y2,x1,y1);
self.Image1.Canvas.Pen.Mode:=pmcopy;
self.Image1.Canvas.Rectangle(x2,y2,x,y);
end;
if(i=5)then //橡皮擦
begin
self.Image1.Canvas.Pen.Color:=clwhite;
self.Image1.Canvas.Pen.Width:=10;
self.Image1.Canvas.MoveTo(x1,y1);
self.Image1.Canvas.LineTo(x,y);
end;
x1:=x;
y1:=y;
end;
end;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
x1:=x;
y1:=y;
x2:=x;
y2:=y;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
self.Image1.Canvas.Pen.Width:=10;
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
i:=5;