如何使用 FireMonkey TCanvas.DrawXXX 方法?
How to use FireMonkey TCanvas.DrawXXX methods?
我尝试创建一个带有自定义可视化效果的表单,但我无法使用最简单的 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;
我尝试创建一个带有自定义可视化效果的表单,但我无法使用最简单的 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;