本例效果图:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); var ps: array[0..9] of TPoint; Rgn: HRGN; begin ps[0] := Point(120, 5); ps[1] := Point(140, 70); ps[2] := Point(210, 70); ps[3] := Point(150, 100); ps[4] := Point(180, 175); ps[5] := Point(120, 120); ps[6] := Point(60, 175); ps[7] := Point(90, 100); ps[8] := Point(30, 70); ps[9] := Point(100, 70); {建立多边形区域} Rgn := CreatePolygonRgn(ps, Length(ps), WINDING); {填充区域} Canvas.Brush.Color := clSilver; Canvas.Brush.Style := bsCross; FillRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle); {绘制区域边界} Canvas.Brush.Color := clRed; Canvas.Brush.Style := bsSolid; FrameRgn(Canvas.Handle, Rgn, Canvas.Brush.Handle, 2, 2); DeleteObject(Rgn); end; end.