procedure TForm1.Button1Click(Sender: TObject);
var
  rgn : HRGN;
  rgnPoints : array of TPoint;
  hbr : HBRUSH;
begin
  setlength(rgnPoints,4);
  rgnPoints[0].X := 0;
  rgnPoints[0].Y := 0;
  rgnPoints[1].X := 100;
  rgnPoints[1].Y := 0;
  rgnPoints[2].X := 100;
  rgnPoints[2].Y := 100;
  rgnPoints[3].X := 0;
  rgnPoints[3].Y := 100;
  rgn := CreatePolygonRgn(rgnPoints[0],4,WINDING);
  if rgn<>0 then
  begin
        hbr := CreateSolidBrush(clRed);
        FillRgn(Form1.Canvas.Handle,rgn,hbr);
        deleteObject(rgn);
        DeleteObject(hbr); 
  end;
end;
赫赫,我这样来画正方形,真是有毛病!不过希望对你有帮助!
对数组的要求是要 没有重复的顶点! 而且他总是认为是闭合的!