C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[49850] Re:[질문]최대/최소값에 해당하는 x 좌표에 관해서.. [TChart]
smleelms [smleelms] 1647 읽음    2007-07-10 11:39
Chart Tools의 Annotation tool을 응용하시면 될것같네요.
혹 최근 Example이 있으시면 Tools - Annotation - Annotation Callout 을 한번 보시기 바랍니다.
그리고 샘플코드 일부 추가합니다.

//---------------------------------------------------------------------------
void __fastcall TAnnotationCO::SetCallout(int AIndex)
{
  // Change annotation text
  ChartTool1->Text = "Point: "+IntToStr(AIndex)+TeeLineSeparator+
                   "Value: "+Series1->ValueMarkText[AIndex];

  // Re-position annotation callout
  ChartTool1->Callout->Visible = true;
  ChartTool1->Callout->XPosition = Series1->CalcXPos(AIndex);
  ChartTool1->Callout->YPosition = Series1->CalcYPos(AIndex);
  ChartTool1->Callout->ZPosition = 0;
}
//---------------------------------------------------------------------------
// Returns Series point index that is nearest to xy position.
int __fastcall TAnnotationCO::NearestPoint(TChartSeries *ASeries, int x, int y)
{
  int res = -1;
  int Difference = -1;
  int tmpDif;
  for (int t=0; t<ASeries->Count(); t++)
  {
    tmpDif = int(TeeDistance(ASeries->CalcXPos(t)-x,ASeries->CalcYPos(t)-y));
    if (Difference==-1 || tmpDif<Difference)
    {
      Difference = tmpDif;
      res = t;
    }
  }
  return res;
}
//---------------------------------------------------------------------------
void __fastcall TAnnotationCO::Chart1MouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
  if (CheckBox1->Checked) // follow mouse
  {
    // Locate nearest point to mouse...
    int tmp = NearestPoint(Series1, X, Y);
    if (tmp!=-1) SetCallout(tmp);  // set annotation callout
  }
}
//---------------------------------------------------------------------------



unitas 님이 쓰신 글 :
: data를 300 개 받아서 그래프로 최대/최소(y좌표값)값에 표시를 해야 하는데
: (Line Series와 Point Series 2개로 표시)
: Series1->MinXValue() 과 Series1->MaxXValue()를 이용하면 y좌표의 최대,최소값이
: 나오는데 그때 해당하는 x좌표값을 얻을수 있는 함수나 방법이 있나요?
: [수신값을 일일이 비교하는 방법 말구요.]
:
: 그리고 한가지만 더 할께요.
: [포럼의 TChart에 관한 검색을 해봤는데 이 내용이 없더라구요. - 몇일째 해결이 안되서요.]
: mark 표시에 관한건데요.
:
: Line 그래프로가 이미 표시가 되어 있을때 아무대나 마우스로 찍으면 그에 해당하는 x,y 값이 나오잖아요.
: 그때 x 좌표값은 그대로 가지고 y 좌표는 마우스로 클릭한 위치에서 Line 그래프와 만나는 곳에
: 표시를 하고 싶거든요.
: [질문이 좀 애매한것 같아서 그림 첨부합니다.]
:
: 검색을 해보니 Series[0]->XScreenToValue(X) 와 Series[0]->YScreenToValue(Y)를 이용하라고
: 나와 있는데 이 함수는 단지 마우스로 클릭한 바로 그 위치만 알수 있잖아요.
:
: 아시는분 부탁드립니다.

+ -

관련 글 리스트
49839 [질문]최대/최소값에 해당하는 x 좌표에 관해서.. [TChart] unitas 1382 2007/07/09
49850     Re:[질문]최대/최소값에 해당하는 x 좌표에 관해서.. [TChart] smleelms 1647 2007/07/10
49851         Re:Re:[질문]Chart Tools의 Annotation tool 가 상용툴 인가요? unitas 1116 2007/07/10
49855             Re:Re:Re:[질문]Chart Tools의 Annotation tool 가 상용툴 인가요? smleelms 1386 2007/07/10
49858                 Re:Re:Re:Re:[질문]5.0은 없네요. unitas 942 2007/07/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.