В настоящее время я использую C ++ Builder 6 XE4 для разработки финансовых графиков. Исключение при перемещении в местоположение на холсте диаграммы

Используя C ++ Builder 6 XE4 для создания финансовых графиков, я пытался создать функцию рисования линий. Серия, которую я создал, была свечой. Я пытался перейти к координате XY, как было указано указателем мыши, но всякий раз, когда ударил следующий фрагмент кода, он вызывал исключение.

Chart1-> Canvas-> MoveTo (10,20); -> дали некоторые допустимые значения.

Можно ли нарисовать линию или какие-либо фигуры на графике (не на форме)?
Если да, не могли бы вы, пожалуйста, дайте мне знать, как это должно быть сделано.

Благодарю.

1

Решение

Да, TeeChart Pro VCL / FMX включает в себя инструмент DrawLine (TDrawLineTool) для этой цели. В версии TeeChart, поставляемой с C ++ Builder XE4, вы можете вручную нарисовать линии на холсте диаграммы, выполнив что-то похожее на приведенный ниже пример кода.

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "VCLTee.CandleCh"#pragma link "VCLTee.OHLChart"#pragma resource "*.dfm"TForm2 *Form2;
int X0,Y0;
int X1,Y1;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
X0=-1;
Y0=-1;
X1=-1;
Y1=-1;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Chart1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y)
{
if ((X0==-1) || (Y0==-1)) {
X0=X;
Y0=Y;
}
else {
X1=X;
Y1=Y;
Chart1->Draw();
}

}
//---------------------------------------------------------------------------
void __fastcall TForm2::Chart1AfterDraw(TObject *Sender)
{
if ((X1!=-1) && (Y1!=-1)) {
Chart1->Canvas->Line(X0,Y0,X1,Y1);
X0=-1;
Y0=-1;
X1=-1;
Y1=-1;
}
}
//---------------------------------------------------------------------------
0

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

Других решений пока нет …