Search code examples
drawingfiremonkeyshapes

FireMonkey drawing with tPath does not fill the shape


I want to use a TPathData to draw shapes and fill them with an arbitrary color. I'm using the following code, at Button1Click, which I extracted from a sample at Embarcadero documentation:

procedure TformPathDrawing.Button1Click(Sender: TObject);
var path: TPathData;
begin
  Image1.Bitmap.Canvas.Fill.Color := TAlphaColorRec.Blue;
  path      := TPathData.Create;
  path.Data := 'M 01,00 L 02,01 L 01,02 L 00,01 L 01,00';
  Image1.Bitmap.Clear ($FFFFFF);
  Image1.Bitmap.Canvas.BeginScene;
  Image1.Bitmap.Canvas.FillPath (path, 200);
  Image1.Bitmap.Canvas.EndScene;
end;

When this code is executed, as expected, a rhomboid is rendered, but it is not filled up with the color set in the first command. Anyone know what is wrong? Thanks.


Solution

  • Follows code that works (in my case):

    procedure TformPathDrawing.Button1Click(Sender: TObject);
    begin
    Image1.Bitmap.Canvas.Fill.Color := TAlphaColorRec.Blue;
    path.Clear;
    path.Data := 'M 01,00 L 02,01 L 01,02 L 00,01 L 01,00';
    Image1.Bitmap.Canvas.BeginScene;
    Image1.Bitmap.Canvas.FillPath (path, 1);
    Image1.Bitmap.Canvas.EndScene;
    end;
    

    In my code, variable path is created outside the painting code. Since path.Data; is additive, it is mandatory, before adding the current path.Data;, to place a path.Clear; statement, to clean out whatever remains into the point array. Hope this help other people.