Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何使用FireMonkey TCanvas.DrawXXX方法?_Delphi_Firemonkey - Fatal编程技术网

Delphi 如何使用FireMonkey TCanvas.DrawXXX方法?

Delphi 如何使用FireMonkey TCanvas.DrawXXX方法?,delphi,firemonkey,Delphi,Firemonkey,我试图创建一个带有自定义可视化的表单,但我无法使用最简单的TCanvas绘图方法。在以下示例中,我只能看到填充矩形,但没有直线和圆弧: procedure TEditorPanel.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); var center, radius: TPointF; rect: TRectF; begin with Canvas do begin Fill.Color

我试图创建一个带有自定义可视化的表单,但我无法使用最简单的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 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;
你看过这个q吗?