! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

ChartSlider에서 변경 시 C1Chart의 X축 시작과 끝의 Timestamp 얻어오는 방법 > Q&A | 토론

본문 바로가기

ComponentOne

Q&A | 토론

WPF ChartSlider에서 변경 시 C1Chart의 X축 시작과 끝의 Timestamp 얻어오는 방법

페이지 정보

작성자 KJNOH 작성일 2021-12-28 11:13 조회 1,340회 댓글 0건
제품 버전 : 버전을 어떻게 확인하나요?
컨트롤 이름 : C1Chart

본문

안녕하세요.


ChartSlider에서 slider변경 시 그 아래 위치한 C1Chart의 X축 시작과 끝(Time)이 변경되도록 구현했습니다.

변경될 때 X축의 시작과 끝의 TimeStamp 값을 가져와서 처리하고 싶은데, 방법이 없는것 같아 문의드립니다.



void Slider_LowerValueChanged(object sender, EventArgs e)

        {

            if (ZoomChart != null)

            {

                if (Slider.UpperValue - Slider.LowerValue < MIN_Range)

                    Slider.LowerValue = Slider.UpperValue - MIN_Range;


                Axis ax = ZoomChart.View.AxisX;

                if (ax.Max != ax.Min)

                {

                    double min = ax.Min + Slider.LowerValue * (ax.Max - ax.Min);

                    Minimum = min;

                }

            }

        }


        void Slider_UpperValueChanged(object sender, EventArgs e)

        {

            if (ZoomChart != null)

            {

                if (Slider.UpperValue - Slider.LowerValue < MIN_Range)

                    Slider.UpperValue = Slider.LowerValue + MIN_Range;


                Axis ax = ZoomChart.View.AxisX;

                if (ax.Max != ax.Min)

                {

                    double max = ax.Min + Slider.UpperValue * (ax.Max - ax.Min);

                    Maximum = max;

                }

            }

        }


        void ZoomChart_Loaded(object sender, RoutedEventArgs e)

        {

            if (Foreground is SolidColorBrush)

            {

                Color clr = ((SolidColorBrush)Foreground).Color;

                Slider.Box.Fill = new SolidColorBrush(Color.FromArgb(32, clr.R, clr.G, clr.B));

                Slider.Box.Stroke = new SolidColorBrush(Color.FromArgb(200, clr.R, clr.G, clr.B));

            }

            //legend.DataContext = ZoomChart;

        }


        // ** zooming

        double Minimum

        {

            get { return double.IsNaN(MIN) ? ZoomChart.View.AxisX.Min : MIN; }

            set

            {

                if (value != MIN)

                {

                    MIN = value;

                    Update();

                }

            }

        }

        double Maximum

        {

            get { return double.IsNaN(MAX) ? ZoomChart.View.AxisX.Max : MAX; }

            set

            {

                if (value != MAX)

                {

                    MAX = value;

                    Update();

                }

            }

        }


        void Update()

        {

            if (_timer == null)

            {

                _timer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(0.5) };

                _timer.Tick += (s, e) =>

                {

                    PerformUpdate();

                    _timer.Stop();

                };


            }

            if (!_timer.IsEnabled)

                _timer.Start();

        }


        void PerformUpdate()

        {

            if (mBatteryLevelChart != null)

            {

                mBatteryLevelChart.BeginUpdate();

                mBatteryLevelChart.View.AxisX.Min = Minimum;

                mBatteryLevelChart.View.AxisX.Max = Maximum;

                mBatteryLevelChart.EndUpdate();

            }


            if (mDeviceStatusChart != null)

            {

                mDeviceStatusChart.BeginUpdate();

                mDeviceStatusChart.View.AxisX.Min = Minimum;

                mDeviceStatusChart.View.AxisX.Max = Maximum;

                mDeviceStatusChart.EndUpdate();

            }

        }

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

1 답변

WPF Re: ChartSlider에서 변경 시 C1Chart의 X축 시작과 끝의 Timestamp 얻어오는 방법

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK폴 작성일 2021-12-31 12:26 댓글 0건

본문

안녕하세요 그레이프시티입니다. 


X축에 DateTime 값이 포함된 경우 Axis의 GetMin/GetMax 메서드를 사용하여 다음과 같이 해당 범위 경계를 가져올 수 있습니다.

DateTime axisXMin = (DateTime)chart.ChartArea.AxisX.GetMin();

DateTime axisXMax = (DateTime)chart.ChartArea.AxisX.GetMax();


아시겠지만 C1Chart는 내부적으로 DateTime 객체의 OLE 를 사용합니다. 따라서 필요한 경우 다음과 같이 DateTime의 FromOADate 메서드를 사용하여 Axis Min/Max를 수동으로 변환할 수도 있습니다.

DateTime axisXMin = DateTime.FromOADate(chart.ChartArea.AxisX.Min);


추가 문의가 있으시면 언제든 알려 주시기 바랍니다.


감사합니다.

그레이프시티 드림

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.