目录系统需求分析---------------------------------------------------------------------------------------------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);beginif (ssleft in shift) then//self.Image1.Canvas.Pen.Color:=clWindowText;//self.Image1.Canvas.Pen.Width:=10;beginif(i<>1)and(i<>2)and(i<>3)and(i<>4)and(i<>5)thenbeginself.Image1.Canvas.MoveTo(x1,y1);self.Image1.Canvas.LineTo(x,y);end;if (ssleft in shift) thenbeginif(i=1) then //随便画线beginself.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 //画直线beginself.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 //画圆beginself.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 //画矩形beginself.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 //橡皮擦beginself.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);beginx1:=x;y1:=y;x2:=x;y2:=y;end;procedure TForm1.BitBtn4Click(Sender: TObject);beginself.Image1.Canvas.Pen.Width:=10;end;procedure TForm1.BitBtn5Click(Sender: TObject);begini:=5;end;Image1.Picture.Bitmap.Assign(Bmpleft);bmpleft.Free;end;end;procedure TForm1.BitBtn2Click(Sender: TObject);begini:=2;end;procedure TForm1.BitBtn1Click(Sender: TObject); begini:=1;end;procedure TForm1.BitBtn3Click(Sender: TObject); begini:=3;end;procedure TForm1.BitBtn6Click(Sender: TObject); begini:=4;end;procedure TForm1.BitBtn7Click(Sender: TObject); beginself.Image1.Canvas.Pen.Width:=1;end;procedure TForm1.N5Click(Sender: TObject); beginif savedialog1.Execute thenimage1.Picture.SaveToFile(savedialog1.FileName); end;procedure TForm1.ColorGrid1Change(Sender: TObject);beginself.Image1.Canvas.Pen.Color:=ColorGrid1.ForegroundColor;end;end.【2】图片处理://实现图片的曝光功能procedure TForm1.N9Click(Sender: TObject);var x,y:integer ;beginbeginBmpleft := TBitmap.Create;Bmpleft.PixelFormat := pf24bit;bmpleft.Assign(bmp);image1.Width:= image1.Width;image1.Height:= image1.Height;for y := 0 to Bmpleft.Height - 1 dobeginp := Bmpleft.scanline[y];for x := 0 to Bmpleft.Width - 1 dobeginif p[x * 3] < 128 thenp[x * 3] := not p[x * 3];if p[x * 3 + 1] < 128 thenp[x * 3 + 1] := not p[x * 3 + 1];if p[x * 3 + 2] < 128 thenp[x * 3 + 2] := not p[x * 3 + 2];end;end;//实现图片的去反色功能procedure TForm1.N10Click(Sender: TObject);var x,y:integer ;beginbeginBmpleft := TBitmap.Create;Bmpleft.PixelFormat := pf24bit;bmpleft.Assign(image1.Picture.Bitmap);for y := 0 to Bmpleft.Height - 1 dobeginp := Bmpleft.scanline[y];for x := 0 to Bmpleft.Width - 1 dobeginp[x * 3] := not p[x * 3];p[x * 3 + 1] := not p[x * 3 + 1];p[x * 3 + 2] := not p[x * 3 + 2];end;end;Image1.Picture.Bitmap.Assign(Bmpleft);bmpleft.Free;end;end;//实现图像的还原功能procedure TForm1.N14Click(Sender: TObject); beginBmp.LoadFromFile(openpicturedialog1.FileName); Bmp.PixelFormat := pf24bit;Bmp1.PixelFormat := pf24bit;Bmphuidu.PixelFormat := pf24bit;bmp1.Assign(bmp);bmphuidu.Assign(bmp);Image1.Picture.Bitmap.Assign(bmp1);end;系统的运行结果系统的运行效果可以用一下例图来展示:【1】画图效果展示【2】图片效果展示【3】图片的反色效果展示【4】图片的曝光效果展示。