2015-06-05 2 views
0

Я пытаюсь выяснить контроль Teechart и график холста всех четырех углов в клиентской координате.Как найти верхнюю/левую и верхнюю/правую часть графика Teechart и холст Teechart?

Кто-нибудь знает API Teechart, который возвращает координату холста для всех четырех углов?

Спасибо

+0

Какую версию TeeChart интересует: VCL/FMX, .NET, ActiveX, Javascript и т. Д. Спасибо. –

+0

Мы используем Teechart Pro v7.0.1.4 ActiveX (C++). В настоящее время я поддерживаю старый программный пакет. – user3280398

+0

Мне также нравится знать, есть ли у Teechart API-интерфейсы для всего угла диаграммы. Я бы хотел использовать эти контрольные точки для пользовательского draw/box вне графика. – user3280398

ответ

2

Для определения положения диаграммы в форме окна, вы можете использовать свойство диаграмм .Left и .Top. Точно так же вы можете получить углы TChart, используя ChartRect. Пожалуйста, ознакомьтесь с кодом ниже:

// CDraggingDlg message handlers 

BOOL CDraggingDlg::OnInitDialog() 
{ 
…. 
    CDialog::OnInitDialog(); 
    // Extra initialization 
    m_ctrlChart.RemoveAllSeries(); 

    m_ctrlChart.GetAspect().SetView3D(false); 
    m_ctrlChart.AddSeries(scLine); 
    m_ctrlChart.Series(0).FillSampleValues(100); 
    return TRUE; 
} 

std::string text; 

void CDraggingDlg::OnAfterDrawTChart() 
{ 

    // Draw a white circle around the clicked pyramid... 

    CTeeRect r = m_ctrlChart.GetGetChartRect(); 
    long recwidth, recheight, posLeft, posTop; 

    int BottomLCornerX,BottomLCornerY, BottomRCornerX, BottomRCornerY, TopLCornerX, TopLCornerY, TopRCornerX, TopRCornerY; 
    std::string s1, s2, s3; 

    //Get Width 
    recwidth = (r.GetRight()- r.GetLeft()); 
    recheight = (r.GetBottom()-r.GetTop()); 

    //GetPosition 
    posLeft = m_ctrlChart.GetLeft(); 
    posTop = m_ctrlChart.GetTop(); 

    //CalculateCorners 
    BottomLCornerX = r.GetLeft(); 
    BottomLCornerY = r.GetBottom(); 
    BottomRCornerX = r.GetRight(); 
    BottomRCornerY = r.GetBottom(); 
    TopLCornerX = r.GetLeft(); 
    TopLCornerY = r.GetTop(); 
    TopRCornerX = r.GetRight; 
    TopRCornerY = r.GetTop(); 
    //Visualization Values 
    s1 = "Position Chart :" + std::to_string(posLeft) + "," + std::to_string(posTop); 
    s2 = "Chart Rect Positons: Left " + std::to_string(r.GetLeft()) + " Top " + std::to_string(r.GetTop()) + " Right " + std::to_string(r.GetRight()) + " Bottom " + std::to_string(r.GetBottom()); 
    s3 = "Chart Rect Corners: BottomLeft " + std::to_string(BottomLCornerX) + "," + std::to_string(BottomLCornerY) + " BottomRight " + std::to_string(BottomRCornerX) + "," + 
    std::to_string(BottomRCornerY) + "\n TopLeft " + std::to_string(TopLCornerX) + "," + std::to_string(TopLCornerY) + " TopRight " + std::to_string(TopRCornerX) + "," + std::to_string(TopRCornerY); 
    text = s1 + "\n" + s2 +"\n"+s3 ; 
} 
void CDraggingDlg::OnButton1() 
{MessageBox(text.c_str()); }