【问题标题】:Delphi draw lines in a PlotGrid with canvasDelphi 在带有画布的 PlotGrid 中绘制线条
【发布时间】:2016-10-11 21:08:42
【问题描述】:

我正在使用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;

如您所见here 我在 Tab2 上有 PlotGrid,在 Tab1 上有按钮。为什么这段代码没有向 PlotGrid 添加一行? 当我点击按钮时应该会出现一条线(从 (0;0) 到 (1;5))。

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

【问题讨论】:

标签: delphi firemonkey


【解决方案1】:

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;

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

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

上面代码的示例图片:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 2014-01-30
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    相关资源
    最近更新 更多