在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);
}
我有一些值需要绘制成一条垂直线。该行应该是从图表字段的开始到结束。
我在 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);
}