Pawel Glowacki from Embarcadero has a blog post from a couple years ago where he explains how to create a Firemonkey component. The component he creates is called TSimpleTriangle and it is a triangle component similar to TRectangle in usage. Delphi XE5 Firemonkey doesn’t have a triangle component built in that I know of so this is a welcome addition to your component set. The component works on all platforms so Android, IOS, Windows, and OSX. I needed this triangle component when I was building Flappy Firemonkey. Originally the component was built for Delphi XE2 but it needed one extra line of code to make it work in Delphi XE5 Firemonkey. John Gray from the Embarcadero Firemonkey forums provided the solution. The FillPolygon and DrawPolygon functions take an array of points so you could expand this component to create any number of different polygon shapes. Here is the Paint event from the component:
procedure TSimpleTriangle.Paint;
var
R: TRectF; half: Single;
begin
R := GetShapeRect;
half := R.Left + (R.Right-R.Left)/2;
FPoints[0] := PointF(R.Left, R.Bottom);
FPoints[1] := PointF(half+1, R.Top);
FPoints[2] := PointF(R.Right, R.Bottom);
FPoints[3] := PointF(R.Left, R.Bottom);
Canvas.Fill.Assign(Self.Fill); // line added to support XE4 and XE5
Canvas.FillPolygon(FPoints, AbsoluteOpacity);
Canvas.DrawPolygon(FPoints, AbsoluteOpacity);
end;
Download Delphi XE5 Firemonkey Simple Triangle Component
Head over and check out the full blog post about building the Firemonkey triangle component.
In order to use this with XE6, you must add System.Math.Vectors to the uses before trying to compile.