//绘制多边形 procedure TForm1.Button1Click(Sender: TObject); const p: array[0..3] of TPoint = ( (x:100; y:100), (x:140; y:140), (x:180; y:110), (x:140; y:15) ); begin Canvas.Polygon(p); end; //多边折线 procedure TForm1.Button2Click(Sender: TObject); const pts: array[0..3] of TPoint = ( (x:10; y:10), (x:90; y:10), (x:90; y:140), (x:10; y:120) ); begin Canvas.Polyline(pts); end; //PolyBezier 至少需要四个点做参数; 不改变画笔的当前位置 procedure TForm1.Button3Click(Sender: TObject); var pts: array[0..3] of TPoint; begin Canvas.Pen.Width := 2; Canvas.Pen.Color := clBlue; pts[0].X := 292; pts[0].Y := 10; {起点} pts[1].X := 342; pts[1].Y := 10; {控制点1} pts[2].X := 292; pts[2].Y := 100; {控制点2} pts[3].X := 342; pts[3].Y := 100; {终点} Canvas.PolyBezier(pts); Canvas.Pen.Width := 1; Canvas.Pen.Color := clWhite; // Canvas.MoveTo(30, 200); //不改变画笔的当前位置 ,画笔还是处在默认位置处 Canvas.LineTo(ClientWidth, ClientHeight); end; //PolyBezierTo 最少只需要需要三个点, 它把当前位置当作第一点; 会改变画笔的当前位置 procedure TForm1.Button4Click(Sender: TObject); var pts: array[1..3] of TPoint; {从 1 开始的, 就 3 个元素} begin Canvas.Pen.Width := 2; Canvas.Pen.Color := clRed; //提前设定起始点位置 Canvas.MoveTo(332, 10); {起点} pts[1].X := 372; pts[1].Y := 10; {控制点1} pts[2].X := 332; pts[2].Y := 100; {控制点2} pts[3].X := 372; pts[3].Y := 100; {终点} Canvas.PolyBezierTo(pts); Canvas.Pen.Width := 1; Canvas.Pen.Color := clBlue; //画笔位置已发生变化 Canvas.LineTo(ClientWidth, ClientHeight); end;