1、CopyRectDrawDrawFocusRectEllipseFillRectFloodFillFrameRectLineToLockMoveToPiePolygonPolylinePolyBezierPolyBezierToRectangleRefreshRoundRectStretchDrawTextOutTextRectUnlock/函数:HandleAllocatedTextExtentTextHeightTextWidthTryLock/属性:ClipRectHandleLockCountCanvasOrientationPenPosPixelsTextFlagsBrushCopy
2、ModeFontPen/事件OnChangeOnChangingDelphi 的绘图功能2 - 入门 绘图需要有纸、画笔、画刷; Delphi 有 Canvas、Pen、Brush.Canvas 就是画布, 譬如窗体的 Canvas 属性, 就是窗体的画布;Pen 是画笔, 可以设置笔色、笔宽等等;Brush 是画刷, 可以设置颜色等等. /举例:绘制直线procedure TForm1.Button1Click(Sender: TObject);begin Canvas.Pen.Color := clRed; 设置画笔颜色 Canvas.Pen.Width := 2; 设置画笔宽度 Canv
3、as.MoveTo(10,10); 直线起点 Canvas.LineTo(100,100); 直线终点这里的 Canvas 是简写, 也可以写做: Self.Canvas 或 Form1.Canvas end;矩形填充procedure TForm1.Button2Click(Sender: Canvas.Brush.Color := clYellow; 设置画刷颜色, 也就是填充色 Canvas.FillRect(ClientRect); 填充窗体客户区/效果图:Delphi 的绘图功能3 - 矩形类图形 unit Unit1;interfaceuses Windows, Messages,
4、 SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: Button3: Button4: Button5: procedure FormCreate(Sender: procedure Button1Click(Sender: procedure Button2Click(Sender: procedure Button3Click(Sender: procedure Button4Click
5、(Sender: procedure Button5Click(Sender: end;var Form1: TForm1;implementation$R *.dfm btn:const y1 = 10; y2 = 80;先设置画笔画刷procedure TForm1.FormCreate(Sender:= 4;= clWhite;给出左上角和右下角的坐标就可以绘制矩形 btn := TButton(Sender); Canvas.Rectangle(btn.Left, y1, btn.Left+btn.Width, y2);给出一个矩形结构做参数也可以绘制矩形 R: TRect; 定义一个
6、矩形结构 R := Rect(btn.Left, y1, btn.Left+btn.Width, y2); Canvas.Rectangle(R);绘制圆角矩形; 最后两个参数是设置圆角的procedure TForm1.Button3Click(Sender: Canvas.RoundRect(btn.Left, y1, btn.Left+btn.Width, y2, 20,20);绘制焦点矩形; 它不受画笔的影响; 它的颜色是和画刷的颜色进行某种运算得来的procedure TForm1.Button4Click(Sender: Canvas.DrawFocusRect(R);矩形描边,
7、用的不是画笔是画刷procedure TForm1.Button5Click(Sender: Canvas.FrameRect(R);end.Delphi 的绘图功能4 - 圆弧类图形 绘制椭圆; 椭圆的参数和矩形是一样的 Canvas.Ellipse(btn.Left, y1, btn.Left+btn.Width, y2);根据矩形结构绘制椭圆 Canvas.Ellipse(R);绘制扇形 Canvas.Pie( btn.Left, y1, 矩形区域左上角 btn.Left + btn.Width, y2, 矩形区域右下角 btn.Left + btn.Width, y1 + (y2-y1
8、) div 2, 扇形起点 btn.Left + btn.Width div 2, y1 扇形终点 );绘制弦, 参数同上 Canvas.Chord( btn.Left, y1, btn.Left + btn.Width, y2, btn.Left + btn.Width, y1 + (y2-y1) div 2, btn.Left + btn.Width div 2, y1绘制弧线, 参数同上 Canvas.Arc(Delphi 的绘图功能5 - 获取 Canvas 对象 在窗体上添加 Panel1、PaintBox1 和 Button1, 代码如下: cvs: TCanvas; PaintB
9、ox1 就像窗体一样, 也有 Canvas 属性 PaintBox1.Canvas.Brush.Color : PaintBox1.Canvas.FillRect(PaintBox1.ClientRect); 像 Panel1 这样没有 Canvas 属性的控件, 也可以绕道获取 cvs := TCanvas.Create; cvs.Handle := GetDC(Panel1.Handle); cvs.Brush.Color := clBlue; cvs.FillRect(Panel1.ClientRect); cvs.Free;/执行前后对比图:Delphi 的绘图功能6 - Polygo
10、n、Polyline 绘制多边形; 它的参数是一个点数组, 这里定义了一个常数数组 pts: array0.3 of TPoint = ( (x:10; y:40),46;120),82;10) Canvas.Polygon(pts);绘制连续的一组直线; 它的参数也是一个点数组, 我只是把上面的平移了一点10+82;46+82;82+82; Canvas.Polyline(pts);Delphi 的绘图功能7 - PolyBezier、PolyBezierTo PolyBezier 至少需要四个点做参数; 不改变画笔的当前位置 array0.3 of TPoint; pts0.X := 10
11、; pts0.Y : 起点 pts1.X := 60; pts1.Y : 控制点1 pts2.X : pts2.Y := 100; 控制点2 pts3.X : pts3.Y : 终点 Canvas.PolyBezier(pts);= 1; Canvas.LineTo(ClientWidth, ClientHeight);PolyBezierTo 最少只需要需要三个点, 它把当前位置当作第一点; 会改变画笔的当前位置 array1.3 of TPoint; 从 1 开始的, 就 3 个元素 Canvas.MoveTo(10 + 82, 10); /pts0.X := 60 + 82;= 10 +
12、 82; Canvas.PolyBezierTo(pts);/绘制多条贝塞尔线时, 每条线的终点也是下条线的起点.PolyBezier 绘制多条线时, 需要 3*x + 1 个点 array0.6 of TPoint;= 40; pts4.X : pts4.Y : pts5.X := 55; pts5.Y := 99; pts6.X := 70; pts6.Y :PolyBezierTo 绘制多条线时, 需要 3*x 个点 array1.6 of TPoint;= 40 + 82;= 100 + 82;= 55 + 82;= 70 + 82;Delphi 的绘图功能8 - TextOut、TextWidth、TextHeight arr: array0.3 of WideString = ( 白日依山尽,黄河入海流欲穷千里目更上一层楼 a = 20; 横向间隔 b = 20; 纵向间隔 s: string;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1