Я пытаюсь выяснить управление Teechart и график холста всех четырех углов в клиентской координате.
Кто-нибудь знает API Teechart, который возвращает координаты холста для всех четырех углов?
Спасибо
Чтобы определить положение графика в форме окна, вы можете использовать .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()); }