如何使用FireMonkey TCanvas.DrawXXX方法? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我尝试使用自定义可视化创建一个表单,但我无法使TCanvas的最简单的绘图方法工作。在下面的示例中,我只能看到填充的矩形,但没有直线和圆弧:

procedure TEditorPanel.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
var
  center, radius: TPointF;
  rect: TRectF;
begin
  with Canvas do
  begin
    Fill.Color := TAlphaColors.White;
    FillRect(RectF(0, 0, Width, Height), 0, 0, AllCorners, 1);

    center := PointF(200, 200);
    radius := PointF(40, 40);

    Stroke.Color := TAlphaColors.Red;
    Fill.Color := TAlphaColors.Blue;
    DrawLine(center, radius, 1);
    DrawArc(center, radius, 0, 90, 1);

    rect := RectF(10, 10, 100, 100);
    FillRect(rect, 0, 0, AllCorners, 100);
  end;
end;

我错过了什么?

delphi firemonkey
1个回答
1
投票

如果您使用的是Delphi 10.1或更高版本您应该将Stroke.Kind设置为TBrushKind.Solid以显示行,None中的默认值:

var
  center, radius: TPointF;
  rect: TRectF;
begin
  with Canvas do
  begin
    Fill.Color := TAlphaColors.White;
    FillRect(RectF(0, 0, Width, Height), 0, 0, AllCorners, 1);

    center := PointF(200, 200);
    radius := PointF(40, 40);

    Stroke.Kind := TBrushKind.Solid;
    Stroke.Color := TAlphaColors.Red;
    Fill.Color := TAlphaColors.Blue;
    DrawLine(center, radius, 1);
    DrawArc(center, radius, 0, 90, 1);

    rect := RectF(10, 10, 100, 100);
    FillRect(rect, 0, 0, AllCorners, 100);
  end;
© www.soinside.com 2019 - 2024. All rights reserved.