Я получил некоторые значения, которые мне нужно нарисовать как вертикальную линию. Линия должна быть от начала до конца поля диаграммы.
Я использую VCLTee.Chart.hpp в Embarcadero. Насколько я знаю, это Tchart, который на самом деле больше используется для Delphi.
Тем не мение:
Я использую эту функцию:
DlgMainWindow->ChartTemperatureCurve->Canvas->DoVertLine(XValue,YValue,ZValue);
Я не могу найти описание. Как я вижу, DoVertLine работает с Pixel диаграммы. Но если мое YValue = 10, и должно быть всегда параллельно x для всего расстояния.
Вы должны конвертировать YValue из значений оси в пиксели с осью CalcPosValue
функция.
Если вы хотите нарисовать линию с постоянным значением YValue, это будет горизонтальный линия, а не вертикальная линия.
В следующем примере я рисую горизонтальную линию с YValue = 10.
Обратите внимание, что функции рисования должны вызываться в OnAfterDraw
событие или подобное, чтобы убедиться, что ваши пользовательские рисунки сделаны после каждого перекрасить.
Использовать OnAfterDraw
событие на RAD Studio, выберите график во время разработки, перейдите к События вкладка на Инспектор объектов и дважды щелкните на белую клетку рядом с 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);
}