Description |
The Points array of points defines a regular or irregular polygon shape. FillPolygon fills in the shape with the specified Brush.
Normally a polygon is deemed to be a shape with angles greater than 90 degrees (obtuse angles). However, a Microsoft polygon can have acute angles, and can overlap itself.
The FillMode optional parameter allows you to define how the fill process handles such an overlapping :
Winding counts the number of lines crossed when radiating out from a point to determine if it is inside the shape. Alternate looks at curve intersections, and the directions each is drawn.
|
|
Microsoft MSDN Links |
System.Drawing
System.Drawing.Graphics
|
|
|
Drawing a red polygon and a yellow/blue hatched polygon |
procedure TWinForm.TWinForm_Paint(sender: System.Object;
e: System.Windows.Forms.PaintEventArgs);
var
solidBrush : System.Drawing.SolidBrush;
hatchBrush : System.Drawing.Drawing2D.HatchBrush;
points : Array[1..6] of System.Drawing.Point;
begin
// Create the brushes
solidBrush := System.Drawing.SolidBrush.Create(Color.Red);
hatchBrush := System.Drawing.Drawing2D.HatchBrush.Create(HatchStyle.Vertical,
Color.Blue,
Color.Yellow);
// Build the points array to form an elongated 6 sided polygon
// Note that FillPolygon adds the final link line
points[1] := Point.Create(10, 5);
points[2] := Point.Create(20, 5);
points[3] := Point.Create(25, 10);
points[4] := Point.Create(20, 15);
points[5] := Point.Create(10, 15);
points[6] := Point.Create( 5, 10);
// Draw this polygon using a solid red brush
e.Graphics.FillPolygon(solidBrush, points);
// Draw another polygon using a hatch brush
points[1] := Point.Create(40, 5);
points[2] := Point.Create(50, 5);
points[3] := Point.Create(55, 10);
points[4] := Point.Create(50, 15);
points[5] := Point.Create(40, 15);
points[6] := Point.Create(35, 10);
e.Graphics.FillPolygon(hatchBrush, points);
end;
| Show full unit code | | | Illustrating the two types of FillMode | procedure TWinForm.TWinForm_Paint(sender: System.Object;
e: System.Windows.Forms.PaintEventArgs);
var
solidBrush : System.Drawing.SolidBrush;
points : Array[1..10] of System.Drawing.Point;
begin
// Create the brush
solidBrush := System.Drawing.SolidBrush.Create(Color.Red);
// Build the points array to form an overlapping polygon
// Note that FillPolygon adds the final link line
points[1] := Point.Create( 5, 6);
points[2] := Point.Create(20, 6);
points[3] := Point.Create(20, 14);
points[4] := Point.Create(10, 14);
points[5] := Point.Create(10, 10);
points[6] := Point.Create(25, 10);
points[7] := Point.Create(25, 2);
points[8] := Point.Create(15, 2);
points[9] := Point.Create(15, 18);
points[10] := Point.Create( 5, 18);
// Draw this polygon using a solid red brush and winding filling
e.Graphics.FillPolygon(solidBrush, points, FillMode.Winding);
points[1] := Point.Create(35, 6);
points[2] := Point.Create(50, 6);
points[3] := Point.Create(50, 14);
points[4] := Point.Create(40, 14);
points[5] := Point.Create(40, 10);
points[6] := Point.Create(55, 10);
points[7] := Point.Create(55, 2);
points[8] := Point.Create(45, 2);
points[9] := Point.Create(45, 18);
points[10] := Point.Create(35, 18);
// Draw this polygon using a solid blue brush and alternate filling
solidBrush.Color := Color.Blue;
e.Graphics.FillPolygon(solidBrush, points, FillMode.Alternate);
end;
| Show full unit code | |
|
|
|