在c++中使用Tchart绘制垂直线

Using Tchart in c++ to draw a vertical line

我有一些值需要绘制成一条垂直线。该行应该是从图表字段的开始到结束。

我在 Embarcadero 中使用 VCLTee.Chart.hpp。据我所知,它是 Tchart,实际上更多地用于 Delphi。

但是:

我使用这个功能:

DlgMainWindow->ChartTemperatureCurve->Canvas->DoVertLine(XValue,YValue,ZValue);

我找不到描述。如我所见,DoVertLine 与图表的像素一起使用。但是如果我的 YValue = 10 ,并且在整个距离内应该始终平行于 x。

您应该使用轴 CalcPosValue 函数将 YValue 从轴值转换为像素。

如果您想以恒定 Y 值画一条线,它将是 水平 线,而不是垂直线。

在下面的示例中,我在 YValue=10 处绘制了一条水平线。
请注意,绘图函数应在 OnAfterDraw 事件或类似事件中调用,以确保您的自定义绘图在每次重绘后完成。

要在设计时在 RAD Studio、select 图表上使用 OnAfterDraw 事件,导航到 Events[= 对象检查器 中的 32=] 选项卡,然后双击 OnAfterDraw.
旁边的白色单元格 此操作应打开代码视图,光标位于一个新的空 OnAfterDraw 函数内。
然后你可以在那里添加你想做的事情。即在ChartRect内画一条水平线,在YValue=10:

void __fastcall TForm1::Chart1AfterDraw(TObject *Sender)
{
  Chart1->Canvas->Pen->Color = clRed;

  int X0Pos = Chart1->ChartRect.Left;
  int X1Pos = X0Pos + Chart1->ChartRect.Width();
  double YVal = 10;
  int YPos = Chart1->Axes->Left->CalcPosValue(YVal);

  Chart1->Canvas->DoHorizLine(X0Pos, X1Pos, YPos);
}