0

我正在尝试在 Delphi 表单上绘制/显示几何形状,给定特定 X 和 Y(笛卡尔)的列表线和弧。

例子:

-Line X0Y0 to X10Y0
-Line X10Y0 to X10Y10
-Line X10Y10 to X0Y10
-Line X0Y10 to X0Y0
-Arc/Circle at X5Y5 diameter of 1

将绘制一个 10x10 的正方形,中心有一个 1 单位直径的孔。我怎样才能在表格上画这个?

我正在尝试使用这篇文章有一个参考,但是有没有更好的方法来做到这一点? http://docwiki.embarcadero.com/CodeExamples/XE4/en/FMXTCanvasDrawFunctions_(Delphi)

4

1 回答 1

2

在新的 VCL 表单应用程序 ( File->New->VCL Form Application) 中,将 aTButton放在表单中间,双击它以创建TForm1.Button1Click事件处理程序,然后使用以下代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  OldBrushColor, OldPenColor: TColor;
begin
  // I've enlarged the size of the rectangle (box)
  // to 20 x 20 for illustration purposes.
  OldBrushColor := Self.Canvas.Brush.Color;
  Self.Canvas.Brush.Color := clBlack;
  Self.Canvas.Rectangle(10, 10, 30, 30);
  Self.Canvas.Brush.Color := OldBrushColor;
  Self.Canvas.Ellipse(11, 11, 29, 29);

  // Alternative using MoveTo/LineTo and
  // changing pen color
  OldPenColor := Self.Canvas.Pen.Color;
  Self.Canvas.Pen.Color := clRed;
  Self.Canvas.MoveTo(30, 10);
  Self.Canvas.LineTo(50, 10);
  Self.Canvas.MoveTo(50, 10);
  Self.Canvas.LineTo(50, 30);
  Self.Canvas.MoveTo(50, 30);
  Self.Canvas.LineTo(30, 30);
  Self.Canvas.MoveTo(30, 30);
  Self.Canvas.LineTo(30, 10);
  Self.Canvas.Ellipse(31, 11, 49, 29);

  Self.Canvas.Pen.Color := OldPenColor;

end;

以上示例:

屏幕截图

您可以在文档中找到其他TCanvas绘图方法(例如Arc、以及和Chord的组合。(该链接适用于 XE4 的文档,但 Delphi 2006 文档也应该有相关信息。)MoveToLineTo

于 2013-05-22T22:16:16.467 回答