Delphi使用画布在PlotGrid中绘制线条

时间:2016-10-11 21:08:43

标签: delphi firemonkey

我正在使用TPlotGrid,因为我想尝试在其中添加一些内容。看看这个简单的代码:

procedure TForm1.Button1Click(Sender: TObject);
var a,b: TPointF;
begin
 a.X := 0;
 a.Y := 0;
 b.X := 1;
 b.Y := 5;
 PlotGrid.Canvas.DrawLine(a,b,1);
end;

如您所见[{3}}我在Tab2上有PlotGrid,在Tab1上有按钮。为什么这段代码没有为PlotGrid添加一行?当我点击按钮(从(0; 0)到(1; 5))时,一行应显示

我是Canvas的新手,尤其是TPlotGrid,但后者在Google上并不是很受欢迎,文档上也没有太多内容(只有一页有一个简单的例子)。

1 个答案:

答案 0 :(得分:4)

TPlotGrid提供带有网格线的画布,但它无法存储绘图元素(线条,矩形等)。您需要做的第一件事就是安排存储数据。在您的示例中,将点ab移至表单的私有部分,以便随时可用。

在实际应用程序中,您可以将元素存储在其他地方的某些数据结构中。

在按钮OnClick事件中设置这些点的值并调用PlotGrid.Repaint;

procedure TForm4.Button1Click(Sender: TObject);
begin
  a.X := 0;
  a.Y := 0;
  b.X := 300;
  b.Y := 100;
  PlotGrid1.Repaint;
end;

OnPaint创建一个TPlotGrid事件,在这里您可以进行实际绘图:

procedure TForm4.PlotGrid1Paint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  Canvas.Stroke.Color := TAlphaColors.Chocolate;
  Canvas.DrawLine(a,b,1);
end;

使用上一代码的示例图片:

enter image description here