|
좌표구하는 거는 어제 알려드린 소스에 있는데여.. ㅡㅡ;
마우스를 클릭하면 차트의 화면상에서의 좌표점을 알 수 있습니다..
글구 그 화면상의 좌표로부터 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 ) ;
: }
:
:
:
:
|