第10章其他编程.ppt
《第10章其他编程.ppt》由会员分享,可在线阅读,更多相关《第10章其他编程.ppt(110页珍藏版)》请在三一办公上搜索。
1、第10章 其他编程,第10章 其他编程,Delphi实用教程,第10章 其他编程,10.1 图形图像处理10.1.1画布的通用属性和方法,TCanvas Object(画布对象)常用方法及功能:(1)Arc方法 语法:Arc(x1,y1,x2,y2,x3,y3,x4,y4:Integer)Arc方法在椭圆上画一段弧,椭圆由(x1,y1)、(x2,y2)两点所 确定的椭圆所决定。弧的起点是椭圆圆周和椭圆中心与(x3,y3)连线的交点。弧矩形终点是椭圆周和椭圆中心与(x4,y4)连线的 交点,以逆时针方向画弧。例如,以下的程序将在窗口中将在窗口中绘制一个圆弧:procedure TForm1.Fo
2、rmPaint(Sender:TObject);var R:TRect;begin R:=GetClientRect;Canvas.Arc(R.Left,R.Top,R.Right,R.Bottom,R.Right,R.Top,R.Left,R.Top);end;,第10章 其他编程,10.1.1画布的通用属性和方法,(2)Chord方法语法:Chord(x1,y1,x2,y2,x3,y3,x4,y4:Integer)Chord方法连接椭圆上的两点,椭圆由(x1,y1)、(x2,y2)两点所确定的矩形决定,(x3,y3)是始点,(x4,y4)是终点。例如,在Form1窗体上放置一个按钮“连接椭
3、圆上的两点”,双击该按钮,输入下面的代码:procedure Tform1.Button1Click(Sender:TObject);var R:TRect;beginR:=GetClientRect;Get coordinates of the current window.Canvas.Chord(R.Left,R.Top,R.Right,R.Bottom,R.Right,R.Top,R.Left,R.Top);end;,第10章 其他编程,10.1.1画布的通用属性和方法,Canvas类的Chord方法示例,第10章 其他编程,10.1.1画布的通用属性和方法,(3)Brushcopy方
4、法 语法:Brushcopy(const Dest:TRect;Bitmap:Tbitmap;const Source TRect;Color:Tcolor)Brushcopy方法把位图的一部分复制到画布的某个矩形区域,并用画笔的当前颜色替换位图的颜色。Dest定义画布的一个矩形区域,该矩形用以填充位图,Bitmap定义位图;Source定义位图中的矩形区域,该区域上的位图将被复制;Color定义画笔中,用以替换位图的颜色。,第10章 其他编程,10.1.1画布的通用属性和方法,(4)CopyRect方法 语法:CopyRect(Dest:TRect;Canvas:TCanvas;Source
5、TRect)此方法从另一个画布对象上复制部分图像到该画布。Canvas表示复制画布,Source是源画布上要复制的图像区域,Dest表示目标画布上将接受复制图像的矩形区域。,第10章 其他编程,10.1.1画布的通用属性和方法,(5)Draw方法 语法:Draw(x,y:Integer;Graphic:Tgraphic)此方法在画布给定的像素点坐标(x,y)处画由参数Graphic所给的图像,该图像可以是位图、图标或元位图。Tcanvas的其他方法列于表中。,第10章 其他编程,10.1.1画布的通用属性和方法,2.Tpen Object(画笔对象)用于在画布上绘制各种线段,该对象常用的属性有
6、:l Color:定义笔的颜色;l Width:定义线段宽度;l Style:定义线段的各种类型,如表所示;,第10章 其他编程,10.1.1画布的通用属性和方法,Mode:定义线段的颜色,取值如表所示。,第10章 其他编程,10.1.1画布的通用属性和方法,3.Tbrush Object(画刷对象)画刷对象用以填充图形,如用画刷颜色或图案对矩形或椭圆进行填充。Tbrush拥有一个画刷句柄(Hbrush)。画刷的颜色定义在Color属性中,画刷还有一个Bitmap属性,该属性只能在运行时得到,画刷可使用位图填充图形以产生特殊效果。,第10章 其他编程,10.1.1画布的通用属性和方法,4.TC
7、olor类型 TColor类型用于定义一个对象的颜色。很多部件的颜色属性就是TColor类型,在Graphics单元中TColor定义如下:TColor=-(COLOR_ENDCOLORS+1)$02FFFFF;,第10章 其他编程,10.1.2 图形图像组件,Image组件 Image组件是一个容器组件,它在应用程序窗体窗口中提供了一个矩形区域,用于显示和输出位图、图标、图元文件或用户自定义的图形文件。Image组件的常用属性表。,第10章 其他编程,10.1.2 图形图像组件,2.Shape组件 Shape组件用于在窗体中绘制几何图形,如椭圆、矩形和圆角矩形等。该组件的常用属性有:l Sh
8、ape:指明需要绘制的几何图形,它可能的取值和含义 如表所示;lBrush:指明在几何图形中填充的样式;l Pen:指定几何图形所使用的线型。,第10章 其他编程,10.1.2 图形图像组件,3.PaintBox组件 该组件是一个简单的画板,它为应用程序提供了可在窗体的特定矩形区域内画图的方法。PaintBox组件的主要属性有:(1)Anchors属性 该属性包含4个子属性(akLeft、akTop、akRight和akBotton),用来指定在运行过程中,当父组件是可调时,它相对于父组件边沿的位置。(2)BoundsRect属性 该属性用来指定组件的矩形边界,用其父组件的坐标系来表示。,第1
9、0章 其他编程,10.1.2 图形图像组件,例如,以下代码用于绘制矩形:procedure Tform1.Button1Click(Sender:TObject);var MyRect:TRect;begin MyRect:=ActiveControl.BoundsRect;MyRect.right=MyRect.Left+2*(MyRect.Right-MyRect.Left);MyRect.Botton:=MyRect.Top+(MyRect.Botton-MyRect.Top)div 2;ActiveControl.BoundsRect:=MyRect;end;(3)Canvas属性 该
10、属性仅在运行时有效,使用该属性可以在组件表面的特定区域进行绘图。(4)Color属性该属性可用于除“颜色”对话框以外的所有组件或对象。(5)Constaints属性该属性强制指定组件的大小。,第10章 其他编程,10.1.3图形(Picture)对象,读取图像 读取图像需要使用LoadFromFile方法来调用,同时配合 OpenDialog函数来选择相应的图像文件。下面的代码实现对 图像文件的读取:procedure Tform1.Open1Click(Sender:Tobject);begin if OpenDialog1.Execute then begin CurrentFile:=O
11、penDialog1.Filename;Image.Picture.LoadFromFile(CurrentFile);end;end;,第10章 其他编程,10.1.3图形(Picture)对象,2.保存图像 为将Image组件中的图像保存为文件,可调用Image组件的Picture属性的SaveToFile方法。SaveToFile方法需要一个保存文件的文件名。下面的代码是一般程序常用的“Save”和“Save As”菜单的处理程序:procedure Tform1.Save1Click(Sender:Tobject)beginif CurrentFile then Image.Pictu
12、re.SaveToFile(CurrentFile)else SaveAsClick(Sender);end;procedure Tform.Saveas1Click(Sender:TObject);begin if SaveDialog1.Execute then begin CurrentFile:=SaveDialog1.FileName;Save1Click(Sender);end;end;,第10章 其他编程,10.1.3图形(Picture)对象,3.替换图像 用户可以在任何进修替换掉Image组件中的图像,只要将一新的图像对象赋给Picture就可以了。下面的代码实现用一个新的位
13、图对象代替原有的Image组件中的Picture中的图像对象的功能:Bitmap:Tbitmap:beginBitmap:=Tbitmap.Create;Bitmap.Width:=NewWidth;Bitmap.Height:=NewHeight;Image.Picture.Graphic:=Bitmap;CurrentFile:=;end;,第10章 其他编程,10.1.3图形(Picture)对象,【例】屏幕复制,将当前屏幕的图像抓下来,显示到窗口中;还可以文件的形式保存起来。步骤如下:(1)建立用户界面:建立窗体Form1,添加一个Panel、一个Timer、一个SavePicture
14、Dialog、四个Button控件并在Panel控件上添加一个 Image控件。(2)再创建窗体Form2,用于窗口抓图的显示窗口;在该窗体中添加一个Image控件和Timer控件,其中Image控件用于保存图像。(3)设置控件属性:对添加的控件按下表设置其属性。,第10章 其他编程,10.1.3图形(Picture)对象,控件的属性设置,第10章 其他编程,10.1.3图形(Picture)对象,(4)激活第一个单元文件,单击Delphi 7的File菜单下的Use Unit项,出现窗口,选择Unit2,单击OK。(5)编写程序代码如下:procedure TForm1.Timer1Time
15、r(Sender:TObject);/完成对屏幕的复制,并粘帖到Image控件中 var Fullscreen:Tbitmap;Fullscreencanvas:tcanvas;dc:HDC;begin timer1.Enabled:=false;fullscreen:=tbitmap.Create;/建立一个BITMAP来存放图像 fullscreen.Width:=screen.Width;dc:=getdc(0);/API函数,获取屏幕 fullscreencanvas:=tcanvas.Create;/建立一个CANVAS对象 fullscreencanvas.Handle:=dc;f
16、ullscreen.Canvas.CopyRect(rect(0,0,screen.Width,screen.Height),fullscreencanvas,rect(0,0,screen.Width,screen.Height);,第10章 其他编程,10.1.3图形(Picture)对象,fullscreencanvas.Free;releasedc(0,dc);image1.Picture.Bitmap:=fullscreen;/将拷贝下的图像赋给IMAGE对象 image1.Width:=fullscreen.Width;image1.Height:=fullscreen.Heigh
17、t;fullscreen.Free;form1.WindowState:=wsnormal;form1.Show;messagebeep(1);end;procedure TForm1.Button4Click(Sender:TObject);begin close;end;,第10章 其他编程,10.1.3图形(Picture)对象,procedure TForm1.Button1Click(Sender:TObject);begin form1.WindowState:=wsminimized;form1.Hide;timer1.Enabled:=true;end;procedure TF
18、orm1.Button3Click(Sender:TObject);begin if form1.SavePictureDialog1.Execute then begin form2.Image1.Picture.SaveToFile(savepicturedialog1.FileName);end;end;,第10章 其他编程,10.1.3图形(Picture)对象,procedure TForm1.Button2Click(Sender:TObject);begin form1.Hide;form2.Hide;form2.Timer1.Enabled:=true;end;end.var
19、Form2:TForm2;foldx,x1,y1,x2,y2,oldx,oldy,foldy:integer;flag,trace:boolean;implementationuses unit3;$R*.dfm,第10章 其他编程,10.1.3图形(Picture)对象,procedure TForm2.Timer1Timer(Sender:TObject);var fullscreen:TBitmap;fullscreencanvas:TCanvas;dc:HDC;beginform2.timer1.enabled:=false;fullscreen:=tbitmap.create;ful
20、lscreen.width:=screen.Width;fullscreen.Height:=screen.Height;dc:=getdc(0);fullscreencanvas:=tcanvas.Create;fullscreencanvas.Handle:=dc;fullscreen.Canvas.CopyRect(rect(0,0,screen.Width,screen.Height),fullscreencanvas,rect(0,0,screen.Width,screen.Height);fullscreencanvas.Free;releasedc(0,dc);,第10章 其他编
21、程,10.1.3图形(Picture)对象,image1.Picture.Bitmap:=fullscreen;image1.Width:=fullscreen.Width;image1.Height:=fullscreen.Height;fullscreen.Free;form2.WindowState:=wsnormal;form2.Show;messagebeep(1);foldx:=-1;foldy:=-1;image1.Canvas.Pen.Mode:=pmnot;/笔的模式取反 image1.Canvas.Pen.Color:=clblack;/笔的颜色 image1.Canvas
22、.Brush.Style:=bsclear;/刷子的格式 flag:=true;end;,第10章 其他编程,10.1.3图形(Picture)对象,procedure TForm2.Image1MouseMove(Sender:Tobject;Shift:TShiftState;X,Y:Integer);begin if trace=true then/追踪鼠标 begin/擦除旧的图形并画上新的图形 with image1.Canvas do begin rectangle(x1,y1,oldx,oldy);rectangle(x1,y1,x,y);oldx:=x;oldy:=y;end;
23、end else if flag=true then,第10章 其他编程,10.1.3图形(Picture)对象,begin with image1.Canvas do begin moveto(foldx,0);lineto(foldx,screen.Height);moveto(0,foldy);lineto(screen.Width,foldy);moveto(x,0);lineto(x,screen.Height);moveto(0,y);lineto(screen.Width,y);foldx:=x;foldy:=y;end;end;end;,第10章 其他编程,10.1.3图形(P
24、icture)对象,procedure TForm2.Image1MouseDown(Sender:Tobject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);/绘制区域图像 var width,height:integer;newbitmap:TBitmap;begin if(trace=false)then begin/首次点击鼠标左键,开始追踪鼠标 flag:=false;with image1.Canvas do begin moveto(foldx,0);lineto(foldx,screen.Height);moveto(0
25、,foldy);lineto(screen.Width,foldy);,第10章 其他编程,10.1.3图形(Picture)对象,end;x1:=x;y1:=y;oldx:=x;oldy:=y;trace:=true;image1.Canvas.Pen.Color:=clblack;image1.Canvas.Brush.Style:=bsclear;end else begin/第2次点击鼠标,得到矩形,并将它拷贝到FORM1的IMAGE上 x2:=x;y2:=y;trace:=false;,第10章 其他编程,10.1.3图形(Picture)对象,image1.Canvas.Recta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 其他 编程
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6614836.html