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
[23411] Re:TChart 질문.... Y좌표를 구하는 방법 좀 가르쳐주세요
이종빈 [offspring] 2537 읽음    2002-12-27 11:02
좌표구하는 거는 어제 알려드린 소스에 있는데여.. ㅡㅡ;
마우스를 클릭하면 차트의 화면상에서의 좌표점을 알 수 있습니다..
글구 그 화면상의 좌표로부터 Series에서의 좌표를 구하게 됩니다..

1.
마우스 클릭했을때 화면상 좌표를 TPoint ptScreen; 라고 하면,
이 값은 차트의 OnMouseUp 이벤트로 알아낼 수 있습니다..

2.
Series에서의 좌표를 double ptSeries_X, ptSeries_Y; 라고 하면,

ptSeries_X = Chart1->BottomAxis->CalcPosPoint(prScreen.x);
ptSeries_Y = Chart1->LeftAxis->CalcPosPoint(prScreen.y);

이렇게 구할수 있습니다..

3. 참고
CalcPosPoint() 메소드는 스크린좌표를 시리즈좌표로 변환해줍니다..

글구 Series에 넣는 모든 값는 double 형입니다..
X축을 시간으로 표시하셨다구 하셨는데,

TDateTime dt; double y;

Series1->XValues->DateTime = true;
Series1->AddXY((doubole)dt, y, "", clTeeColor);

이렇게 값을 넣으면 위에서 설명드린 방법으로 좌표를 구하실 수 있을 겁니다..

시간포맷은
Chart1->BottomAxis->DateTimeFormat = "hh:nn:ss";
이런식으로 설정 해주시면 됨니다..

ps.
NULL 값을 넣는다는건 무슨 말씀인지.. ^^;




최종혁 님이 쓰신 글 :
: 어제 올렸는데 머리가 멍청하니까 또 올리게 됩니다.
: 지송....
: 차트에서 그래프를 그리고 난후 막대선을 그릴려고 합니다.
: 막대선은 그릴줄 알겠는데
: 버튼을 누르면 막대가 움직이는 걸 만들고 싶습니다.
: 해당 씨리지에 날짜와 값이 들어가는데.....
: 특정 날짜에 해당하는 Y좌표를 구할수 있나요?
: 그 Y좌표를 구하면 막대선은 그냥 그릴수 있는데...
: Y좌표를 구할수가 없네요..
: 일단 임의로....막대선은 그렸습니다.
: 해당 날짜에 해당하는 Y좌표를 구하는 방법 좀 가르쳐주세요
: 그리고 chart -> Series [ Index ] -> AddY ( 값, "", clTeeColor ) ;
:        chart -> Series [ Index ] -> XLabel [ count++ ] = dateHour ;
: 이렇게 값을 넣었는데....
: 이 값에다가 NULL값을 넣을수 있나요? 궁금합니다.
:
: 어제 답변주신 이종빈님 감사드립니다. ^^ 꾸벅
:
: void __fastcall
: TformStatRelativeConcGraph::chartBeforeDrawSeries
:     ( TObject * Sender )
:     {
:
:     int partial, XPosition;
:     double tmpXCenterValue;
:
:     tmpXCenterValue = chart -> Series [ 0 ] -> YValues -> MinValue +
:                       50 *( chart -> Series [ 0 ] -> YValues -> MaxValue -
:                       chart -> Series [ 0 ] -> YValues -> MinValue ) / 100.0 ;
:
:     XPosition = chart -> LeftAxis -> CalcYPosValue ( tmpXCenterValue ) ;
:
:     chart -> Canvas -> Pen -> Width = 3 ;
:     chart -> Canvas -> Pen -> Style = psSolid ;
:     chart -> Canvas -> Pen -> Color = clRed ;
:     chart -> Canvas -> MoveTo ( XPosition, chart -> ChartRect.Bottom ) ;
:     chart -> Canvas -> LineTo ( XPosition + chart -> Height3D, chart -> ChartRect.Bottom - chart -> Width3D ) ;
:     chart -> Canvas -> LineTo ( XPosition + chart -> Height3D, chart -> ChartRect.Top - chart -> Width3D ) ;
:
:     }
: //---------------------------------------------------------------------------
:
: void __fastcall
: TformStatRelativeConcGraph::chartAfterDraw
:     ( TObject * Sender )
:     {
:
:     int    XPosition;
:     double tmpXCenterValue;
:     // first calculate the middle vertical value (based on LineSeries points)
:     tmpXCenterValue = chart -> Series [ 0 ] -> YValues -> MinValue +
:                       50 *( chart -> Series [ 0 ] -> YValues -> MaxValue -
:                       chart -> Series [ 0 ] -> YValues -> MinValue ) / 100.0 ;
:
:     // change pen and draw the line
:     chart -> Canvas -> Pen -> Width = 3 ;
:     chart -> Canvas -> Pen -> Style = psSolid ;
:     chart -> Canvas -> Pen -> Color = clRed ;
:     chart -> Canvas -> MoveTo ( XPosition, chart -> ChartRect.Bottom ) ;
:     chart -> Canvas -> LineTo ( XPosition, chart -> ChartRect.Top ) ;
:     chart -> Canvas -> LineTo ( XPosition + chart -> Width3D, chart -> ChartRect.Top - chart -> Height3D ) ;
:     }

:
:
:

+ -

관련 글 리스트
23402 TChart 질문.... Y좌표를 구하는 방법 좀 가르쳐주세요 최종혁 1044 2002/12/26
23411     Re:TChart 질문.... Y좌표를 구하는 방법 좀 가르쳐주세요 이종빈 2537 2002/12/27
23415         Re:Re:TChart 질문.... Y좌표를 구하는 방법 좀 가르쳐주세요 최종혁 847 2002/12/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.