我正在使用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上并不是很受欢迎,文档上也没有太多内容(只有一页有一个简单的例子)。
答案 0 :(得分:4)
TPlotGrid
提供带有网格线的画布,但它无法存储绘图元素(线条,矩形等)。您需要做的第一件事就是安排存储数据。在您的示例中,将点a
和b
移至表单的私有部分,以便随时可用。
在实际应用程序中,您可以将元素存储在其他地方的某些数据结构中。
在按钮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;
使用上一代码的示例图片: