teechart — Использование Tchart в c ++ для рисования вертикальной линии

Я получил некоторые значения, которые мне нужно нарисовать как вертикальную линию. Линия должна быть от начала до конца поля диаграммы.

Я использую VCLTee.Chart.hpp в Embarcadero. Насколько я знаю, это Tchart, который на самом деле больше используется для Delphi.

Тем не мение:

Я использую эту функцию:

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

Я не могу найти описание. Как я вижу, DoVertLine работает с Pixel диаграммы. Но если мое YValue = 10, и должно быть всегда параллельно x для всего расстояния.

0

Решение

Вы должны конвертировать 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);
}
2

Другие решения


По вопросам рекламы [email protected]