2013-11-14 1 views
1

При использовании построителя C++ 6 XE4 для создания финансовых диаграмм я пытался создать линию рисования. Серия, которую я создал, - это серия свечей Stick. Я попытался переместиться в координату XY, как указано указателем мыши, но всякий раз, когда попал ниже фрагмент кода, он выбросил исключение.В настоящее время я использую C++ builder 6 XE4 для разработки финансовых графиков. Исключение при перемещении к местоположению на диаграмме canvas

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

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

Спасибо.

ответ

0

Да, 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; 
    } 
} 
//---------------------------------------------------------------------------