WPF ChartSlider에서 변경 시 C1Chart의 X축 시작과 끝의 Timestamp 얻어오는 방법
페이지 정보
작성자 KJNOH 작성일 2021-12-28 11:13 조회 1,341회 댓글 0건본문
관련링크
안녕하세요.
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();
}
}
댓글목록
등록된 댓글이 없습니다.