delphi画图

合集下载

Delphi 的绘图功能

Delphi 的绘图功能

Graphics 单元中的类//Graphics 单元中的类TGraphicsObjectTFontTPenTBrushTFontRecallTPenRecallTBrushRecallTCanvasTGraphicTPictureTMetafileCanvasTMetafileImageTMetafileTBitmapImageTBitmapTIconImageTIconTResourceManagerTBrushResourceManagerTFileFormatsListDelphi 的绘图功能[1] - TCanvas 的类成员//过程:ArcBrushCopyChordCopyRectDrawDrawFocusRectEllipseEllipseFillRectFloodFillFrameRectDelphi 的绘图功能[3] - 矩形类图形unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Button3: TButton;Button4: TButton;Button5: TButton;procedure FormCreate(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Button5Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varbtn: TButton;consty1 = 10;y2 = 80;{先设置画笔画刷}procedure TForm1.FormCreate(Sender: TObject);beginCanvas.Pen.Width := 4;Canvas.Pen.Color := clRed;Canvas.Brush.Color := clWhite;end;{给出左上角和右下角的坐标就可以绘制矩形}procedure TForm1.Button1Click(Sender: TObject);beginbtn := TButton(Sender);Canvas.Rectangle(btn.Left, y1, btn.Left+btn.Width, y2);end;{给出一个矩形结构做参数也可以绘制矩形}procedure TForm1.Button2Click(Sender: TObject);varR: TRect; {定义一个矩形结构}beginbtn := TButton(Sender);R := Rect(btn.Left, y1, btn.Left+btn.Width, y2);Canvas.Rectangle(R);end;{绘制圆角矩形; 最后两个参数是设置圆角的}procedure TForm1.Button3Click(Sender: TObject);beginbtn := TButton(Sender);Canvas.RoundRect(btn.Left, y1, btn.Left+btn.Width, y2, 20,20); end;{绘制焦点矩形; 它不受画笔的影响; 它的颜色是和画刷的颜色进行某种运算得来的} procedure TForm1.Button4Click(Sender: TObject);varR: TRect;beginbtn := TButton(Sender);R := Rect(btn.Left, y1, btn.Left+btn.Width, y2);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure Button5Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}varbtn: TButton;consty1 = 10;y2 = 80;{先设置画笔画刷}procedure TForm1.FormCreate(Sender: TObject);beginCanvas.Pen.Width := 2;Canvas.Pen.Color := clRed;Canvas.Brush.Color := clWhite;end;{绘制椭圆; 椭圆的参数和矩形是一样的}procedure TForm1.Button1Click(Sender: TObject);beginbtn := TButton(Sender);Canvas.Ellipse(btn.Left, y1, btn.Left+btn.Width, y2); end;{根据矩形结构绘制椭圆}procedure TForm1.Button2Click(Sender: TObject);varR: TRect; {定义一个矩形结构}beginbtn := TButton(Sender);R := Rect(btn.Left, y1, btn.Left+btn.Width, y2);Canvas.Ellipse(R);end;{绘制扇形}procedure TForm1.Button3Click(Sender: TObject);beginbtn := TButton(Sender);Canvas.Pie(btn.Left, y1, {矩形区域左上角} btn.Left + btn.Width, y2, {矩形区域右下角} btn.Left + btn.Width, y1 + (y2-y1) div2, {扇形起点}btn.Left + btn.Width div2, y1 {扇形终点});end;{绘制弦, 参数同上}procedure TForm1.Button4Click(Sender: TObject);beginbtn := TButton(Sender);Canvas.Chord(btn.Left, y1,btn.Left + btn.Width, y2,btn.Left + btn.Width, y1 + (y2-y1) div2,btn.Left + btn.Width div2, y1);end;{绘制弧线, 参数同上}procedure TForm1.Button5Click(Sender: TObject);beginbtn := TButton(Sender);Canvas.Arc(btn.Left, y1,btn.Left + btn.Width, y2,btn.Left + btn.Width, y1 + (y2-y1) div2,btn.Left + btn.Width div2, y1);end;Delphi 的绘图功能[6] - Polygon、Polylineunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure FormCreate(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);beginCanvas.Pen.Width := 2;Canvas.Pen.Color := clRed;Canvas.Brush.Color := clYellow;end;{绘制多边形; 它的参数是一个点数组, 这里定义了一个常数数组}procedure TForm1.Button1Click(Sender: TObject);constpts: array[0..3] of TPoint = (Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}{PolyBezier 至少需要四个点做参数; 不改变画笔的当前位置}procedure TForm1.Button1Click(Sender: TObject);varpts: array[0..3] of TPoint;beginCanvas.Pen.Width := 2;Canvas.Pen.Color := clRed;pts[0].X := 10; pts[0].Y := 10; {起点}pts[1].X := 60; pts[1].Y := 10; {控制点1}pts[2].X := 10; pts[2].Y := 100; {控制点2}pts[3].X := 60; pts[3].Y := 100; {终点}Canvas.PolyBezier(pts);Canvas.Pen.Width := 1;Canvas.Pen.Color := clWhite;Canvas.LineTo(ClientWidth, ClientHeight);end;{PolyBezierTo 最少只需要需要三个点, 它把当前位置当作第一点; 会改变画笔的当前位置} procedure TForm1.Button2Click(Sender: TObject);varpts: array[1..3] of TPoint; {从 1 开始的, 就 3 个元素}beginCanvas.Pen.Width := 2;Form1: TForm1;implementation{$R *.dfm}{PolyBezier 绘制多条线时, 需要 3*x + 1 个点} procedure TForm1.Button1Click(Sender: TObject); varpts: array[0..6] of TPoint;beginCanvas.Pen.Width := 2;Canvas.Pen.Color := clRed;pts[0].X := 10; pts[0].Y := 10;pts[1].X := 60; pts[1].Y := 10;pts[2].X := 10; pts[2].Y := 100;pts[3].X := 40; pts[3].Y := 100;pts[4].X := 100; pts[4].Y := 10;pts[5].X := 55; pts[5].Y := 99;pts[6].X := 70; pts[6].Y := 10;Canvas.PolyBezier(pts);end;{PolyBezierTo 绘制多条线时, 需要 3*x 个点}procedure TForm1.Button2Click(Sender: TObject); varpts: array[1..6] of TPoint;beginCanvas.Pen.Width := 2;Canvas.Pen.Color := clRed;Canvas.MoveTo(10 + 82, 10);//pts[0].X := 10; pts[0].Y := 10;pts[1].X := 60 + 82; pts[1].Y := 10;pts[2].X := 10 + 82; pts[2].Y := 100;pts[3].X := 40 + 82; pts[3].Y := 100;pts[4].X := 100 + 82; pts[4].Y := 10;pts[5].X := 55 + 82; pts[5].Y := 99;pts[6].X := 70 + 82; pts[6].Y := 10;Canvas.PolyBezierTo(pts););{参数三是 TTextFormat 类型的集合, 它定义如下:}TTextFormat = set of TTextFormats;{TTextFormats 是个枚举, 定义如下}TTextFormats = (tfBottom, tfCalcRect, tfCenter, tfEditControl, tfEndEllipsi s,tfPathEllipsis, tfExpandTabs, tfExternalLeading, tfLeft, tfModifyString, tfNoClip, tfNoPrefix, tfRight, tfRtlReading, tfSingleLine, tfTop,tfVerticalCenter, tfWordBreak);{所以参数三可以是下列值之一或它们的组合}tfBottomtfCalcRecttfCentertfEditControltfEndEllipsistfPathEllipsistfExpandTabstfExternalLeadingtfLefttfModifyStringtfNoCliptfNoPrefixtfRighttfRtlReadingtfSingleLinetfToptfVerticalCentertfWordBreak//这个函数是 API 函数 DrawTextEx 的简化, 可以参见: DrawTextEx//第二种重载的举例1:{默认是顶对齐、左对齐; 前两个参数都是传址的, 不能用常量}procedure TForm1.FormPaint(Sender: TObject);varR: TRect;constS = '万一的 Delphi 博客';begin := '微软雅黑';Canvas.Font.Style := [fsBold, fsItalic];Canvas.Font.Color := clRed;Canvas.Font.Height := 72;Canvas.TextOut(10, 10, S);end;//TFont 类的常用属性:{Name: 字体名称}{Color: 颜色}{Size、Height: 字号与字体高度, 都可以设定字体大小}{Style: 字体样式; 是个集合值, 是下面可选值或它们的组合:} fsBoldfsItalicfsUnderlinefsStrikeOut{Pitch: 是字间距相关的, 有三个枚举值可选(不过我没测试出效果):} fpDefaultfpVariablefpFixed{Charset: 字符集, 是个整数, 可能的值有:}ANSI_CHARSET = 0;DEFAULT_CHARSET = 1;SYMBOL_CHARSET = 2;SHIFTJIS_CHARSET = 128;HANGEUL_CHARSET = 129;GB2312_CHARSET = 134;CHINESEBIG5_CHARSET = 136;OEM_CHARSET = 255;Shift: TShiftState; X, Y: Integer);end;varForm1: TForm1;implementation{$R *.dfm}varx1,y1,x2,y2: Integer; {直线两个端点的坐标}f: Boolean; {判断鼠标是否点下}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);beginx1 := X; y1 := Y;x2 := X; y2 := Y;Canvas.Pen.Color := clRed;Canvas.Pen.Width := 2;Canvas.Pen.Mode := pmXor;f := True;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);beginif f thenbegin{擦除}Canvas.MoveTo(x1, y1);Canvas.LineTo(x2, y2);x2 := X; y2 := y;{重绘}Canvas.MoveTo(x1, y1);Canvas.LineTo(x2, y2);end;end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);ShowMessage(Format('宽度: %d; 高度: %d', [w,h])); {宽度: 24; 高度: 13}{如果字号改变了, 当然高度与宽度也会随之变化}Canvas.Font.Size := 16;wh := Canvas.TextExtent(str);w := wh.cx;h := wh.cy;ShowMessage(Format('宽度: %d; 高度: %d', [w,h])); {宽度: 42; 高度: 25}{Font.Height 是可读写的}Canvas.Font.Height := 32;wh := Canvas.TextExtent(str);w := wh.cx;h := wh.cy;ShowMessage(Format('宽度: %d; 高度: %d', [w,h])); {宽度: 52; 高度: 32}end;posted on 2008-02-18 22:32 万一阅读(474) 评论(0)编辑收藏所属分类: Delphi 的绘图功能把窗体客户区图像保存到文件或剪切板unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Button3: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses Clipbrd; {剪切板单元}//把窗体客户区保存为图片procedure TForm1.Button1Click(Sender: TObject);varbit: TBitmap;beginbit := TBitmap.Create;bit := Self.GetFormImage;bit.SaveToFile('c:\temp\img1.bmp');bit.Free;end;//用一句话完成上一个过程procedure TForm1.Button2Click(Sender: TObject); beginSelf.GetFormImage.SaveToFile('c:\temp\img2.bmp'); end;//把窗体客户区图像复制到剪切板procedure TForm1.Button3Click(Sender: TObject);varFormat: Word;Data: Cardinal;APalette: HPALETTE;begin{TBitmap.SaveToClipboardFormat 函数的三个参数都是接受数据用的, 按要求类型定义即可}GetFormImage.SaveToClipboardFormat(Format, Data, APalette);{放入剪切板}Clipboard.SetAsHandle(Format, Data);end;end.捕捉全屏图像unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}//捕捉全屏幕图像并保存到: c:\temp\Screen.bmpprocedure TForm1.Button1Click(Sender: TObject);varbit: TBitmap;TForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}//把文字输出到屏幕procedure TForm1.Button1Click(Sender: TObject);varcvs: TCanvas;Rect: TRect;Str: string;begincvs := TCanvas.Create;cvs.Handle := GetDC(0);SetBkMode(cvs.Handle, TRANSPARENT);// := '宋体';cvs.Font.Style := [fsBold, fsItalic];cvs.Font.Size := 48;Randomize;cvs.Font.Color := Random($FFFFFF);Rect := Screen.DesktopRect;Str := '万一的 Delphi 博客';cvs.TextRect(Rect, Str, [tfSingleLine, tfCenter, tfVerticalCenter]); cvs.Free;end;//刷新显示procedure Button4Click(Sender: TObject);procedure Button5Click(Sender: TObject); end;varForm1: TForm1;implementation{$R *.dfm}//使用 API 函数: SetRectprocedure TForm1.Button1Click(Sender: TObject); varR: TRect;beginSetRect(R, 20, 20, 80, 80);Canvas.Pen.Color := clBlue;Canvas.Rectangle(R);end;//使用 Classes.Rect 函数procedure TForm1.Button2Click(Sender: TObject); varR: TRect;beginR := Rect(20, 20, 80, 80);Canvas.Pen.Color := clFuchsia;Canvas.Rectangle(R);end;//使用 Classes.Rect 函数, 用两个点合成procedure TForm1.Button3Click(Sender: TObject); constpt1: TPoint = (x:20; y:20);pt2: TPoint = (x:80; y:80);varR: TRect;beginR := Rect(pt1, pt2);Canvas.Pen.Color := clSkyBlue;Canvas.Rectangle(R);end;//矩形常量procedure TForm1.Button4Click(Sender: TObject);constR: TRect = (Left:20; Top:20; Right:80; Bottom:80); beginCanvas.Pen.Color := clTeal;Canvas.Rectangle(R);end;//使用 Classes.Bounds 函数, 我最喜欢这种办法procedure TForm1.Button5Click(Sender: TObject);varR: TRect;beginR := Bounds(20, 20, 60, 60);Canvas.Pen.Color := clWhite;Canvas.Rectangle(R);end;end.使用System.Sin、System.Cos 函数画圆- 绘制五环图标本例效果图:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;procedure FormCreate(Sender: TObject);procedure FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);procedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}const{把五环的颜色定义为常量数组}Colors: array[0..4] of TColor = (clBlue, clBlack, clRed, clYellow, clGree n);varci: Integer; {用作颜色序号}procedure TForm1.FormCreate(Sender: TObject);beginButton1.Caption := '重绘';Self.Color := clWhite;Canvas.Pen.Width := 5;end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);constr = 30; {圆半径}varradian: Double; {记录弧度; Sin、Cos 函数需要弧度做参数; 弧度 = 角度 * Pi/180} i,a,b: Integer;beginCanvas.MoveTo(X, Y-r);Canvas.Pen.Color := Colors[ci];for i := 1to360dobeginradian := i * (Pi/180); {获取弧度}a := X + Round(Sin(radian) * r); {用 Sin 函数获取横坐标}b := Y - Round(Cos(radian) * r); {用 Cos 函数获取纵坐标}Canvas.LineTo(a, b); {绘制}Application.ProcessMessages; {不要影响其他操作}Sleep(3); {等 3 毫秒}end;Inc(ci);if ci = 5then ci := 0;end;{$R *.dfm}constBoolArr: array[Boolean] of string = ('余弦曲线', '正弦曲线'); varf: Boolean = True;procedure TForm1.FormClick(Sender: TObject);beginf := not f;Repaint;end;procedure TForm1.FormPaint(Sender: TObject);varx: Integer;y,radian: Double;beginCanvas.Pen.Width := 2;Canvas.Pen.Color := clRed;Canvas.MoveTo(0, ClientWidth div2);for x := 0to ClientWidth dobeginradian := x / ClientWidth * 4 * pi;if f then y := Sin(radian) else y := Cos(radian);y := (1-y) * ClientHeight / 2;Canvas.LineTo(Round(x), Round(y));end;Text := BoolArr[f];end;end.两个CopyRectprocedure Button1Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.PaintBox1Paint(Sender: TObject);beginPaintBox1.Canvas.Brush.Color := clWhite;PaintBox1.Canvas.FillRect(PaintBox1.BoundsRect);PaintBox1.Canvas.MoveTo(0, 0);PaintBox1.Canvas.LineTo(PaintBox1.Width, PaintBox1.Height);PaintBox1.Canvas.MoveTo(PaintBox1.Width, 0);PaintBox1.Canvas.LineTo(0, PaintBox1.Height);end;procedure TForm1.PaintBox2Paint(Sender: TObject);beginPaintBox2.Canvas.Brush.Color := clGreen;PaintBox2.Canvas.Ellipse(0, 0, PaintBox2.Width, PaintBox2.Height); end;procedure TForm1.Button1Click(Sender: TObject);varR1,R2: TRect;beginR2 := PaintBox2.BoundsRect;{Windows.CopyRect}CopyRect(R1, R2); //相当于: R1 := R2;Align = alClientOnPaint = PaintBox1Paint ExplicitLeft = 32ExplicitTop = 24ExplicitWidth = 105ExplicitHeight = 105endendobject Panel2: TPanelLeft = 183Top = 8Width = 130Height = 105Caption = 'Panel2'TabOrder = 1object PaintBox2: TPaintBox Left = 1Top = 1Width = 128Height = 103Align = alClientOnPaint = PaintBox2Paint ExplicitLeft = 16ExplicitTop = 0ExplicitWidth = 105ExplicitHeight = 105endendobject Button1: TButtonLeft = 212Top = 128Width = 75Height = 25Caption = 'Button1'TabOrder = 2OnClick = Button1Clickendend。

delphi drawgrid 用法

delphi drawgrid 用法

delphi drawgrid 用法摘要:1.Delphi DrawGrid 组件简介2.DrawGrid 属性设置3.DrawGrid 事件处理4.DrawGrid 绘图方法5.实例演示DrawGrid 用法正文:Delphi是一款由Borland公司开发的快速应用程序开发工具,它提供了许多丰富的组件,方便开发者进行各种功能的开发。

在Delphi中,DrawGrid组件是一个非常实用的组件,它允许用户在窗体上绘制网格,可以用于表格、图形、计算等领域。

下面我们就来详细了解DrawGrid组件的用法。

1.Delphi DrawGrid 组件简介DrawGrid组件在Delphi中的位置是:Component Palette中的“DBGrid”组件,它是一个可定制的表格视图,可以在窗体上绘制水平和垂直的网格线。

DrawGrid组件具有灵活的属性设置和丰富的事件处理,使得开发者可以轻松地实现各种功能。

2.DrawGrid 属性设置DrawGrid组件提供了许多属性,如:Align、Caption、Color、Font、FixedColor等。

其中,FixedColor属性用于设置网格线的颜色,通过设置不同的颜色,可以使网格线更加醒目。

3.DrawGrid 事件处理DrawGrid组件支持多种事件处理,如:Click、DbClick、MouseDown、MouseMove、MouseUp等。

通过编写事件处理程序,开发者可以实现对用户操作的响应,如:单击、双击、鼠标移动等。

4.DrawGrid 绘图方法DrawGrid组件允许用户自定义绘制网格线。

通过编写DrawGrid的OnDrawCell方法,可以实现自定义绘制单元格内容。

此外,DrawGrid还提供了OnDrawColumnHeader和OnDrawFooter方法,分别用于绘制列标题和页脚。

5.实例演示DrawGrid 用法下面通过一个简单的实例,演示DrawGrid组件的用法。

Delphi如何使用基本的绘图函数绘制统计图

Delphi如何使用基本的绘图函数绘制统计图

一个windows自带的画图工具是无论如何也不能满足我们的画图需要的,很多效果都需要我们在另外的工具中来实现。

这些高级的功能是如何实现的呢,如何操纵一些基本的属性和函数,让它们最终能作出我们想要的效果呢?这里我们以绘制统计图来说明这些问题。

解决思路――这里,我们暂且先撇开具体的问题,综合地一下讨论画图的问题。

画图工具是基本元素的具体实现,对于我们初学者来说,还是有很好的参考价值的,在delphi 5中有一个自带的工程例子“……Borland\Delphi5\Demos\Doc\Graphex”,这个例子可以实现一些基本的绘图功能。

对这个例子多加修改,一定会有所收获的。

这里就不列出它的详细代码了,有心的读者可以自己找到这个例子。

我这里只是想综合地讨论这方面的问题。

使用DELPHI编写绘图软件的灵魂就在于操作画布,画笔和刷子,尽可能地挖掘它们的属性和相关参数的设置。

(一)画布画布,画笔和刷子之间的关系很明了.其实,画笔和刷子都是画布的一个属性.而画布也只是TForm,TImage,TShape等组件对象的一个属性,专门负责与图象相关的信息打交道.它的主要作用可以概括如下几点:1.指定使用画笔,刷子和字体的使用类型;2.绘制和填充指定形状的线或图形;3.修饰和改变图象;画布的主要属性有:Brush--指定填充图形和背景的样式CanvasOrientation--指定画布的定位类型,有coLeftToRight, coRightToLeft两个属性;ClipRect--指定剪切矩形的边界;CopyMode--指定图形图象的复制模式;Font--指定画布上使用的字体;Handle--为画布指定窗口GDI对象的设备描述表;LockCount--指定画布被别的线程锁定的次数;Pen--指定画布上使用的画笔,具体见下面描述;PenPos--指定画笔当前的位置;Pixels--指定当前剪切矩形的象素颜色;TextFlags--指定字体在画布上的显示方式,有ETO_CLIPPED,ETO_OPAQUE,ETO_RTLREADING,ETO_GL YPH_INDEX,ETO_IGNORELANGUAGE,ETO_NUMERICSLOCALETO_NUMERIC SLATIN等值可选;画布相关的API函数及其注释如下:Arc--按指定方式画一条弧;BrushCopy--把位图复制到指定的画布的矩形中,用画布刷子颜色替换位图的颜色;Chord--按指定方式画弦;CopyRect--从一个矩形区域复制部分图象到另一个矩形区域;Draw--用指定参数在指定位置画图;DrawFocusRect--按指定焦点风格,通过异或操作来绘制一焦点矩形;Ellipse--按指定参数画一椭圆;FillRect--按指定的刷子填充一矩形;FloodFill--使用当前选定的刷子填充指定设备描述表中的一块区域;FrameRect--使用指定的方式画一矩形的边框;LineTo--使用当前画笔从当前位置到指定点画一条直线;Lock--防止其它线程在画布上绘图;MoveTo--指定一新的当前画笔位置;Pie--按指定方式画饼状图;PolyBezier--按指定方式画多条贝塞尔线;PolyBezierTo--按指定方式画多条贝塞尔线并更新当前的画笔位置值; Polygon--绘制一个由多个顶点的任意序列组成的多边形;Polyline--使用当前画笔画一系列的多边形;Rectangle--绘制矩形;RoundRect--绘制圆角矩形;StretchDraw--在指定的矩形区域通过指定的绘图参数来绘制图形; TextExtent--返回使用当前字体设置的字符的象素宽度和高度等参数; TextHeight--返回使用当前字体设置的字符的象素高度;TextOut--在指定位置绘制文本,并更新画笔的当前位置;TextRect--在一剪切矩形区域中绘制文本;TextWidth--返回使用当前字体设置的字符的象素宽度;TryLock--对当前没加锁的画布进行加锁;Unlock--对当前加锁的画布进行解锁;例如以下是两个小例子:procedure TForm1.Button2Click(Sender: TObject);varARect: TRect;begin //实现了剪切效果;with Image1.Canvas dobeginCopyMode := cmWhiteness; //设置复制模式;ARect := Rect(0, 0, Image1.Width, Image1.Height);CopyRect(ARect, Image1.Canvas, ARect);CopyMode := cmSrcCopy; //恢复复制模式;end;end;procedure TForm1.Button3Click(Sender: TObject);varW: Word;begin //在窗口中画一条彩线;for W := 10 to 200 doCanvas.Pixels[W, 10] :=RGB(random(255),random(255),random(255));; end;灵活使用这些函数及其内部参数会让我们得到意想不到的效果;(二) 画笔画笔是一个GDI对象,定义了绘制直线或轮廓形状的方法.画笔内部共有五种属性:颜色,句柄,模式,风格和宽度.Color--决定指定直线或轮廓形状的RGB颜色。

Delphi使用OpenGL2d绘图之画图片Bmp的方法

Delphi使用OpenGL2d绘图之画图片Bmp的方法

Delphi使⽤OpenGL2d绘图之画图⽚Bmp的⽅法⼀、前⾔:对于Delphi来说,要画图⽚要先处理⼀下,需要引⽤别的单元,⽽Delphi中没带,需要另外下载Gl.pas。

⽹上常见⾃带的OpenGl单元封装的是1.0版的,有此函数未声明。

⽹上可以找到Gl.pas单元。

另外需要⼀个Glaux.pas单元与glaux.dll,是辅助库。

在本⽂最后会提供下载。

⼆、实现流程:绘画图⽚需要以下⼏个流程。

Window本⾝的绘图是以位图为基础的,png,jpg等,绘画时,可以转为bmp再画。

1.加载bmp图⽚:使⽤auxDIBImageLoadA或其他函数2.转换为纹理:glGenTextures -> glBindTexture -> glTexImage2D, glTexParameteri⽤于设置相关参数3.绘制纹理:glBindTexture -> glBegin(GL_QUADS) -> glTexCoord2f -> glVertex2f -> glEnd三、利⽤glDrawPixels函数绘图glDrawPixels共有如下5个参数:width: 表图像的宽度height: 表图像的⾼度format:表图像的数据存储格式atype: 未知pixels: DIB数据的指针⽰例代码如下:procedure TForm1.Draw;varBmp: TBitmap;beginBmp := TBitmap.Create;Bmp.LoadFromFile(ExtractFilePath(ParamStr(0)) + '1.bmp');// 清空缓冲区glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);// TBitmap的图像数据在内存中是按⾏倒序连续存放的,通过TBitmap.ScanLine[TBitmap.Height-1]可以取得⾸地址即图像缓冲区地址// bmp图⽚的颜⾊是按b g r存储的,所以要选 GL_BGR_EXT做为参数glDrawPixels(Bmp.Width, Bmp.Height, GL_BGR_EXT, GL_UNSIGNED_BYTE, Bmp.ScanLine[Bmp.Height - 1]);SwapBuffers(FDC);Bmp.Free;end;⽤以上⽅法绘制图⽚不需要启⽤纹理映射,可以通过glPixelZoom函数来缩放图⽚,显⽰位置在窗⼝的左下⾓(暂时不知道如何改变图像位置。

delphi画图、多媒体、数据库

delphi画图、多媒体、数据库
(3)Arc 方法 [格式]:
procedure Arc(X1,Y1,X2,Y2,X3,Y3,X4,Y4:Integer);
第 12 章 图形图像编程
247
[功能]:用于画一段椭圆弧。其中,椭圆是由点(X1,Y1)的点(X2,Y2)所确定的矩形 所决定,弧的起点是椭圆中心和点(X3,Y3)的连线与椭圆的交点,弧的终点是椭圆中心和点 (X4,Y4)的连线与椭圆的交点,并以逆时针方向画弧。
clYellow
clBackground
clActiveCaption clInactiveCaption
表示的颜色 浅绿色 黑色 蓝色 深灰(灰黑色) 紫红色 灰色 绿色 橙色 浅灰色 枣栗色 深蓝色 橄榄绿 紫色 红色 银灰色 Teal 青凫色(一种蓝) 白色
黄色
当前桌面的背景色
当前窗体的标题栏色 当前不被激活的标题栏的颜色
(6)CopyMode 属性 该属性用于设置从其他画布拷贝图像的方式,其取值及含义如表 12-4 所示,该属性的默 认值为 cmSrcCopy(表示拷贝的像素将覆盖画布上原有的像素)。
246
Delphi 7 应用教程
CopyMode 属性的取值 cmSrcCopy cmBlackness cmDsInvert cmMergeCopy cmMergePaint cmNotSrcCopy cmNotSrcErase cmPatCopy cmPatlnvert cmPatPaint cmSrcAnd cmSrcCopy cmSrcErase cmSrclnvert cmSrcPaint cmWhiteness
244
Delphi 7 应用教程
线 条样式 PsClear PsSolid PsDash PsDot PsDashDot PsDashDotDot

Delphi图形图像处理

Delphi图形图像处理
(5)ReleaseHandle:用来把TBrush 从 QBrush handle中分离出来,当需要把TBrush handle 给一段程序或一个类时,用到这个函数。
1.3.TPen Object(画笔对象)
应用程序常用TPen对象在画布上绘制各种 线段,笔的颜色在Color属性中定义。线段 宽度在Width属性中定义。Style属性定义 了线段的各种类型
2.2.Shape组件
Shape组件用于在窗体中绘制几何图形, 如椭圆,矩形和圆角矩形等。
属性: (1)Shape:绘制图形的形状。 (2)Brush:几何图形中填充的颜色。 (3)Pen:几何图形所使用的线行。
2.3.PaintBox组件
该组件是一个简单的画板,它为应用程序提供了可 在窗体的特定区域内画图的方法。它和Image组件 不同,Image组件是显示已经保存在文件中的图像, 而PaintBox组件需要应用程序直接在窗体上进行 绘制。一旦该组件加入窗体,应用程序就可以利用 OnPaint事件在画板上画图。
这是一个32位二进制数据。Graphic单元中还定 义了一些常用的颜色常量,这些常量或直接映射 成系统调色板中最相近的颜色,或映射成 Windows 控制面板中颜色部分的系统视频颜色。 直接映射成系统调色板中的颜色有: ClAqua,CLBlack,ClBlue,ClbkGrray,ClFuchso a......ClYellow
椭圆,(x1,y1)是矩形左上角的象素坐标, x2,y2是矩形右下角的象素坐标。如果矩形 形成一个区域,将出现一个椭圆。
见例子
线条
LineTo(x,y : Integer); LineTo从当前位置画一条线至(x,y)所指定 的位置,并把笔的位置移至(x ,y)。

在Delphi程序中调用Forcal扩展库绘制动态图形


态 库版本文件小于 10 K,静 态库 版本 约 2 0 ~ 0 K 5 6 K 30 。
通 常 ,使用 各种高 级语 言如 CC + # e h、F R / + 、c 、D l i O — p
G oc12 d 是 一 个 通 用 的 Fra 脚 本 系 统 F ra3W.l l oel 但 G ocl F ra 简化了 F ra脚本 的使用 。 ocl
l F ra 脚 本及 软件 构 成 ocl
F ra是一个 轻量 级嵌 入式快速脚本 ,绿 色免安装 ,不读 o l c
写注册表。与其他脚本不 同 ,Fra 以动态库 的形式提供 ,核 ocl 心库只有一个动 态库文件 F ra3 W. l ocl 常小巧 ,动 oc12 d 。F ra 非 l
Ab ta t o c l c p a y a c l o i n u h t n n t e f r o o r e c d , a e u e r a o stp s sr c :F r a r tc n d n mi al c mp l a d F n t e s g i h o m f u c o e c n b s d f  ̄ u y e si y e i r s o v o t e t a o t r e i n a s a e u e s s rp s o e ot p o e sn ,W e , o f u a in s f r ,g me t fma h ma i ls f c wa e d sg , lo c n b s d a c t fr p r r c s i g i b c ni r t ot e a s wi g o wa h h g f ce c n t e i l me t t n n e a l l sr ts h w t r g a i l h n h x e so o c l GF r a i h ef i n y i h mp e n a i .A x mp e i u tae o o p o r m n Dep ia d t e e t n i n t a l i o l oc l d a y a c g a h c , o u i g o o d GF r a n x e so a i e h i a rb e . r w d n mi rp is f c s n l a o c la d e t n in b sc tc n c p o lms n l Ke r s e p i; o c l; o e l; r c d r s; c p ;d n mi i r r y wo d :D l h F r a Gfr a p o e u e s r t y a c l ay i b

delphi中画布应用两则

Delphi中画布应用两则关键字:Delphi、画布、背景色、分割图像---- 在Delphi 中,窗体(Form)、BitBtn 控件、SpeedButton 控件和PaintBox等控件都具有画布(Canvas)属性。

调用Canvas的作图函数可以在屏幕上画图,如画圆、画线等。

另外,Canvas有一个属性叫Pixels,Pixels是一个二维数组,它的一个元素对应着屏幕上的一个像素点,数组元素的值代表像素点的颜色。

利用Canvas的属性Pixels可以实现一些有趣的功能,下面介绍它的两则应用。

----1.制作背景色----我们在一些软件的安装界面可以看到由深到浅(或由浅到深)的背景色,看起来效果相当不错。

在Delphi中利用Canvas的属性Pixels 可以制作这样的背景色,只要按行或按列改变像素点的颜色就可以了。

一个示例程序的编制过程如下:----(1)建立一个新的应用程序。

----(2)把Form1的属性BorderStyle改为bsNone,在Form1的OnDblClick事件中,键入代码后如下所示:procedureTForm1.FormDblClick(Sender:TObject);varMyColor:Longint;x,y:Word;beginMyColor:=$33;{颜色基数}withCanvasdobegin{当x坐标在外循环,y坐标在内循环时,颜色按列逐渐变化;反之则按行变化}forx:=0toWidthdobeginifxmod4=0then{每隔4列变化一次颜色}beginMyColor:=MyColor+1;{颜色增量为1}end;fory:=0toHeightdobeginPixels[x,y]:=RGB(0,0,MyColor);{用API函数宏RGB合成颜色}end;end;end;end;----(3)运行程序,在窗体中双击鼠标左键,观看运行结果。

----(4)按Alt+F4键,结束运行。

Delphi屏幕绘图

Delphi屏幕绘图Delphi屏幕绘图2008-07-29 00:30以下代码以光标所在位置为中心,在全屏幕上绘制一个十字架:procedure TForm1.Button1Click(Sender: TObject);varFullscreenCanvas:TCanvas;DC:HDC;beginDC:=GetDC(0);//取得屏幕的DC,参数0指的是屏幕FullscreenCanvas := TCanvas.Create;//创建一个CANVAS对象FullscreenCanvas.Handle := DC; //将画布关联到屏幕句柄,以便能做图FullscreenCanvas.MoveTo(mouse.CursorPos.X,0);FullscreenCanvas.LineTo(mouse.CursorPos.x,768);FullscreenCanvas.MoveTo(0,Mouse.CursorPos.Y);FullscreenCanvas.LineTo(1024,Mouse.CursorPos.y);end;以下代码在全屏幕中心绘制一个十字架:procedure TForm1.Button1Click(Sender: TObject);varFullscreenCanvas:TCanvas;DC:HDC;beginDC:=GetDC(0);//取得屏幕的DC,参数0指的是屏幕FullscreenCanvas := TCanvas.Create;//创建一个CANVAS对象FullscreenCanvas.Handle := DC; //将画布关联到屏幕句柄,以便能做图FullscreenCanvas.MoveTo(screen.Width div 2,0);FullscreenCanvas.LineTo(screen.Width div 2,768);FullscreenCanvas.MoveTo(0,Screen.Height div 2);FullscreenCanvas.LineTo(1024,Screen.Height div 2);end;//以下代码实现定时在屏幕正中绘一个十字,一个正方形,一个圆形procedure TForm1.Timer1Timer(Sender: TObject);varMyCanvas:TCanvas;DC:HDC;beginDC:=GetDC(0);MyCanvas:=TCanvas.Create;//MyCanvas.Brush.Color:=clblack; //黑色填充色MyCanvas.Brush.Style:=bsClear; //无背景色MyCanvas.Handle:=DC;//MyCanvas.Brush.Bitmap:=image1.Picture.Bitmap;MyCanvas.MoveTo(screen.Width div 2,0);MyCanvas.LineTo(screen.Width div 2,Screen.Height);MyCanvas.MoveTo(0,screen.Height div 2);MyCanvas.LineTo(screen.Width,screen.Height div 2);MyCanvas.Rectangle(Screen.Width div 2-100,Screen.Height div 2-100,Screen.Width div 2+100,Screen.Height div 2+100); //屏幕正中心绘制一个正方形MyCanvas.Ellipse(Screen.Width div 2-100,Screen.Height div 2-100,Screen.Width div 2+100,Screen.Height div 2+100); //屏幕正中心绘制一个圆形MyCanvas.TextOut(720,300,'我测试再测试,测试直接在屏幕上写字的感觉!'); //在Canvas对象上添加文字end;。

第6章 delphi绘图PPT课件


TObject;
Button:
Delphi简明教程
清华大学出版社
12
图6-4 运行结果
Delphi简明教程
清华大学出版社
13
6.1.3 绘制多边形
绘制多边形调用的是Polyline方法,其语法结果如下: procedure Polyline(Points : array of TPoint); 其中Points是一个TPoint型的数组。仍以例子进行说明。 首先设计窗体如图6-5。
Delphi简明教程
清华大学出版社
10
procedure TForm1.Button1Click(Sender: TObject); begin start:=true; end; procedure TForm1.Button2Click(Sender: TObject); begin Close; end; procedure TForm1.Button2MouseDown(Sender:
第六章 Delphi绘图
6.1 简单图案的绘制 6.2 艺术图案的绘制 6.3 利用鼠标绘制图形 6.4 图形动画的实现 6.5 图像处理
Delphi简明教程
清华大学出版社
1
整体概况
+ 概况1
您的内容打在这里,或者通过复制您的文本后。
概况2
+ 您的内容打在这里,或者通过复制您的文本后。
Delphi简明教程
start:Boolean;
Delphi简明教程
清华大学出版社
5
然后编写如下事件响应程序。 下面过程在窗体的初始化过程中设置start的值为False。 procedure TForm1.FormCreate(Sender:TObject); begin
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TShape组件的属性,事件和方法TImage组件的属性,事件和方法Paintbox组件的属性,事件和方法使用鼠标事件的绘图第 9章图像图形应用编程9.1 图形应用编程本章主要是讲解图形图像对象的概念以及如何在程序运行时绘制图形图像等内容,主要是通过一些例子来讲解 Delphi 7.0 对图形图像强大的处理功能。

在 Delphi 7.0中,专门定义了一组对象和部件用以绘制图形,完成一些简单的图像功能。

利用这些对象、部件的方法,可以方便地绘制各种常用图形;通过设置它们的属性,得到不同风格的图形。

另外,通过鼠标事件的定义,可以方便地设计图形绘制程序。

9.1.1 画布对象属性在图形应用编程中,最常用到的是 canvas类,就是常说的画布。

它可以将某些组件的表面作为一张画布,允许编程者利用有关的命令在其上任意地作图。

很多组件都支持画布这个属性,同时画布本身又是一个对象,它也有自己的属性,但是这些属性必须要在程序执行时才可以来进行设置。

常用的属性有以下几个。

( 1)图形像素数组( PixArray)属性PixArray属性确定用于像素颜色的读取和像素颜色的设置。

( 2)画笔( Pen)属性Pen属性确定画布用做画线及轮廓线的画笔。

9.1.1 画布对象属性 (1)( 3)画刷( Brush)属性Brush属性确定画布用于填充图像及背景色的颜色及图案。

( 4)字体( Font)属性Font属性确定画布的字体。

1,像素像素是构成图形的最基本的单位,画布上每一个点都有对应的像素,用来代表构成一个图形的某一点的颜色。

像素的处理一般包括像素颜色的读取和像素颜色的设置。

最常用的是利用画布的 Pixels属性,来绘制函数曲线。

【例 9-1】用 Pixels属性来画 Y=X的函数曲线。

运行后的界面如图 9-1所示。

图 9-1 用像素来画图主要的功能如下:单击显示按钮,在屏幕上就可以画出 Y=X的函数图。

主要的程序代码如下:图 9-1 用像素来画图9.1.1 画布对象属性 (2)procedure TForm1.Button1Click(Sender,TObject);VAR xt,yt,t:integer; //xt,yt是用来决定像素的位置,t用来控制循环次数。

x,y:real; //x,y是用来取得屏幕的中心beginx:=form1.ClientWidth/2;// ClientWidth属性指的是不包括标题栏在内的宽度。

y:=form1.ClientHeight/2;// ClientHeight属性指的是不包括标题栏在内的高度。

for t:=-10000 to 10000 dobeginxt:=round(t/100+x);{t之所以要除以 100是因为要让像素的显示紧密点没有断断续续的感觉,加上 x是因为原来的中心在( 0,0)的地方,也就是画布的左上角,而现在是要移到( x,y)的地方,将坐标原点进行了移动。

}yt:=round(-t/100+y);canvas.Pixels[xt,yt]:=clblue;//画布的像素颜色为蓝色。

end; end;9.1.1 画布对象属性 (3)2,画笔画布中的画笔属性是用来控制用户画一条线时的线条形状。

画一条线其实就是改变两点间的像素颜色。

画笔本身又包含了四个可以设置的属性:颜色( Color)、宽度( Width)、风格( Style)和显示模式( Mode)。

( 1)颜色属性( Color)在了解颜色属性前,先来了解一下 Windows的颜色系统。

以前可能已经听说了一个颜色是多少位的,这是表示所能表达的颜色数多少的指标,是什么意思呢?比如 1位的颜色则表示 2的一次方,即黑或白两种颜色,这种图片很少见。

8位的颜色则表示最多可以有 28=256种颜色,表明一张图片中最多可以有 256种颜色。

24位的图片可以包含 16M位的颜色。

比如使窗体的背景色为白色则可以用:Form1.Color:=RGB(255,255,255);当然你也可以用数值法来直接表达,如何写呢?在 Delphi 7.0中是在十六进制数前面加$符号。

因为 Windows 98中的颜色系统是 32位的,所以头 8位不用,用 0来表示。

红色可以写成,Form1.Color:=$00FF0000;注意这里是十六进制数。

后 6位每两位代表一个分量( 00-FF),头两位不用。

9.1.1 画布对象属性 (4)接下来了解画笔的颜色属性,它的缺省值为黑色。

如果要将画笔的颜色定义为绿色,那么可以用以下的代码:canvas.pen.color:=clgreen;或者是:canvas.pen.color:=$0000ff00;( 2)风格属性( Style)风格属性是用来设置画笔所画的线的类型,默认值为 psSolid(实线),详见表 9-2。

详见本教程 P152页。

属性值说明 PsClear没有线条 PsSolid实线 PsDash虚线 PsDot圆点PsDashDot点划线 PsDashDotDot双点划线设置画笔的类型可通过如下语句实现,canvas.Pen.Style:=<类型值 >;例如,canvas.Pen.Style:=psDashDot;就设置了画笔的风格类型为点划线。

( 3)显示模式属性( Mode)显示模式属性确定画笔是如何画线的,它的取值有以下几种,详见表 9-3。

详见本教程 P153页。

为了便于表达,可以用三个字母来表示颜色,P(画笔的颜色 ),B(画刷的颜色 ),A(背景中已经存在的颜色 )。

9.1.1 画布对象属性 (5)【例 9-2】画两个方形,并且两个方形之间有一个交集,如图 9-2所示。

图 9-2 pmCopy 属性主要的代码如下:procedure TForm1.Button1Click(Sender,TObject);beginCanvas.Pen.Width:=3; //边框宽度 3Canvas.Pen.Color:=clRed; //画笔颜色:红canvas.Brush.color:=clYellow;//填充色:黄Canvas.Pen.Mode:=pmCopy;//系统默认的模式,可写可不写canvas.Rectangle(10,10,300,300);//画一个矩形,左上角的坐标是( 10,10),右下角的坐标为( 300,300)canvas.Rectangle(50,50,340,340);// 画一个矩形,左上角的坐标是( 50,50),右下角的坐标为( 340,340)end;当把 Canvas.Pen.Mode:=pmCopy;改为 Canvas.Pen.Mode:=pmblack;它的显示效果如图 9-3所示。

9.1.1 画布对象属性 (6 )如果把 Canvas.Pen.Mode:=pmCopy;改为 Canvas.Pen.Mode:=pmwhite;那么图 9-3就变成了白色的了。

如果把 Canvas.Pen.Mode:=pmCopy;改为 Canvas.Pen.Mode:=pmnot,当第一次单击显示按钮的时候,则显示的结果如图 9-4所示。

第二次单击显示按钮的时候,显示结果如图 9-5所示。

记住 pmNot是对背景色求反的一种操作。

图 9-3 pmblack属性图 9-4 pmnot 属性图 9-5 pmnot属性第一次按按钮A,画第一个方形由于背景色是灰色的 RGB(191,191,191),所以他的反色为 RGB(64,64,64)是一种浅黑色。

9.1.1 画布对象属性 (7 )B,画第二个方形在没有图像交叉的部分与画第一个方形没什么两样,背景画图处还是灰色的RGB(191,191,191),所以画出来的还是淡黑色的。

第二次按按钮根据前面讲的外面黑色的部分被反成灰色,而中间的灰色被求了两次反,还是灰色。

如图 9-5所示。

简单地举以上几个例子,其他的属性值自己去尝试一下,你可以看到许多意想不到的效果。

( 4)宽度属性( Width)表示画笔的粗细程度,单位是像素,默认值为 1,表示为一个像素。

设置方式为:canvas.Pen.Width:=<整型 >;例如,canvas.Pen.Width:=5;就设置了画笔的宽度为 5个像素。

3,画刷( Brush)画刷( Brush)属性是用来设置图形内部区域的填充方式。

( 1)颜色( Color)属性颜色属性是来设置画刷的填充区域的颜色,默认情况下是白色。

9.1.1 画布对象属性 (8 )设置方法为 canvas,brush.color:=<属性值 >。

例如 canvas.brush.color:=clred; 就可以将画刷的颜色设置为红色,常见的颜色值参照表9-1。

详见本教程 P155页。

( 2)风格 (Style)属性风格属性是用来确定图形的填充方式,它的取值见表 9-4。

设置方法为,canvas.brush.style:= <类型值 >;例如,canvas.brush.style:= bsCross; 就设置了画刷的线条的类型是十字线。

( 3)位图( Bitmap)属性位图属性用来设置一个存放图形数据的对象,可以在程序运行阶段动态地创建或者删除,常用的命令有:Bitmap.create //创建一个位图对象。

Bitmap.free //释放位图对象。

Bitmap.loadfromfile(‘文件路径’ ) //通过文件路径调入位图,装载在位图对象中。

Bitmap.Draw //在指定的地点按原图的大小显示图形或图像。

9.1.1 画布对象属性 (9 )【例 9-3】位图的创建和释放,主界面如图 9-6所示。

程序代码如下:procedure TForm1.Button1Click(Sender,TObject);varbitmap1:tbitmap;//定义位图变量beginbitmap1:=Tbitmap.Create;//创建位图 bitmap1bitmap1.LoadFromFile('d:/hand.bmp');//装入图像文件form1.Canvas.Draw(10,20,bitmap1);//在坐标( 10,20)的地方显示图形。

bitmap1.Free;//释放位图end;4,作图区域作图区域 Rect是 Trect属性中的对象,同时它也是一个函数。

它的作用就是定义一个矩形区域对象。

Rect对象用两个 Tpoint类型指明区域范围或者用四个整型变量定义区域范围。

图 9-6 位图操作9.1.1 画布对象属性 (10 )它的调用如下:function Rect(ALeft,ATop,ARight,ABottom,Integer),TRect; overload;function Rect(const ATopLeft,ABottomRight,TPoint),TRect; overload;Rect常用的方法有:Rect(x1,y1,x2,y2) //定义 Rect区域范围Fillrect //用填充色填充 Rect区域FloodFill //用填充色填充 Rect之外的区域TextRect //在 Rect对象中显示文本StretchDraw //把 Bitmap填充到 Rect【例 9-4】 Rect对象的方法和属性运行后界面如图 9-7所示。

相关文档
最新文档