Sic.Framework-Nanjing-Baishi/MECF.Framework.UI.Core/Control/LineDataChart.xaml.cs

182 lines
7.6 KiB
C#
Raw Normal View History

2023-04-13 11:51:03 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using SciChart.Charting.Visuals.Axes;
using Aitex.Core.UI.View.Smart;
using Aitex.Core.UI.ControlDataContext;
namespace Aitex.Core.UI.Control
{
/// <summary>
/// Interaction logic for PocketProcessDataChart.xaml
/// </summary>
public partial class LineDataChart : UserControl
{
public LineDataChart()
{
InitializeComponent();
}
private void sciChart_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Right)
{
//右键双击恢复1:1的视图
this.sciChart.ZoomExtents();
}
}
private void NumericAxis_Pyro_MouseEnter(object sender, MouseEventArgs e)
{
pyroAxisTopDown.Visibility = System.Windows.Visibility.Visible;
pyroAxisTopUp.Visibility = System.Windows.Visibility.Visible;
pyroAxisBottomUp.Visibility = System.Windows.Visibility.Visible;
pyroAxisBottomDown.Visibility = System.Windows.Visibility.Visible;
}
private void NumericAxis_Pyro_MouseLeave(object sender, MouseEventArgs e)
{
if (pyroAxisTopDown.IsMouseOver || pyroAxisTopUp.IsMouseOver ||
pyroAxisBottomDown.IsMouseOver || pyroAxisBottomUp.IsMouseOver)
return;
pyroAxisTopDown.Visibility = System.Windows.Visibility.Hidden;
pyroAxisTopUp.Visibility = System.Windows.Visibility.Hidden;
pyroAxisBottomDown.Visibility = System.Windows.Visibility.Hidden;
pyroAxisBottomUp.Visibility = System.Windows.Visibility.Hidden;
}
private void NumericAxis_Wrap_MouseEnter(object sender, MouseEventArgs e)
{
warpAxisTopDown.Visibility = System.Windows.Visibility.Visible;
warpAxisTopUp.Visibility = System.Windows.Visibility.Visible;
warpAxisBottomUp.Visibility = System.Windows.Visibility.Visible;
warpAxisBottomDown.Visibility = System.Windows.Visibility.Visible;
}
private void NumericAxis_Wrap_MouseLeave(object sender, MouseEventArgs e)
{
if (warpAxisTopDown.IsMouseOver || warpAxisTopUp.IsMouseOver ||
warpAxisBottomDown.IsMouseOver || warpAxisBottomUp.IsMouseOver)
return;
warpAxisTopDown.Visibility = System.Windows.Visibility.Hidden;
warpAxisTopUp.Visibility = System.Windows.Visibility.Hidden;
warpAxisBottomDown.Visibility = System.Windows.Visibility.Hidden;
warpAxisBottomUp.Visibility = System.Windows.Visibility.Hidden;
}
private void NumericAxis_Reflect_MouseEnter(object sender, MouseEventArgs e)
{
ReflectAxisTopDown.Visibility = System.Windows.Visibility.Visible;
ReflectAxisTopUp.Visibility = System.Windows.Visibility.Visible;
ReflectAxisBottomUp.Visibility = System.Windows.Visibility.Visible;
ReflectAxisBottomDown.Visibility = System.Windows.Visibility.Visible;
}
private void NumericAxis_Reflect_MouseLeave(object sender, MouseEventArgs e)
{
if (ReflectAxisTopDown.IsMouseOver || ReflectAxisTopUp.IsMouseOver ||
ReflectAxisBottomDown.IsMouseOver || ReflectAxisBottomUp.IsMouseOver)
return;
ReflectAxisTopDown.Visibility = System.Windows.Visibility.Hidden;
ReflectAxisTopUp.Visibility = System.Windows.Visibility.Hidden;
ReflectAxisBottomDown.Visibility = System.Windows.Visibility.Hidden;
ReflectAxisBottomUp.Visibility = System.Windows.Visibility.Hidden;
}
private void YAxisTopUp_Click(object sender, MouseButtonEventArgs e)
{
var l = sender as Label;
NumericAxis axis = sciChart.YAxes[1 + int.Parse(l.Tag.ToString())] as NumericAxis;
double min = (double)axis.VisibleRange.Min;
double max = (double)axis.VisibleRange.Max;
axis.VisibleRange.Max = max + 0.1 * (max - min);
}
private void YAxisTopDown_Click(object sender, MouseButtonEventArgs e)
{
var l = sender as Label;
NumericAxis axis = sciChart.YAxes[1 + int.Parse(l.Tag.ToString())] as NumericAxis;
double min = (double)axis.VisibleRange.Min;
double max = (double)axis.VisibleRange.Max;
axis.VisibleRange.Max = max - 0.1 * (max - min);
}
private void YAxisBottomUp_Click(object sender, MouseButtonEventArgs e)
{
var l = sender as Label;
NumericAxis axis = sciChart.YAxes[1 + int.Parse(l.Tag.ToString())] as NumericAxis;
double min = (double)axis.VisibleRange.Min;
double max = (double)axis.VisibleRange.Max;
axis.VisibleRange.Min = min + 0.1 * (max - min);
}
private void YAxisBottomDown_Click(object sender, MouseButtonEventArgs e)
{
var l = sender as Label;
NumericAxis axis = sciChart.YAxes[1 + int.Parse(l.Tag.ToString())] as NumericAxis;
double min = (double)axis.VisibleRange.Min;
double max = (double)axis.VisibleRange.Max;
axis.VisibleRange.Min = min - 0.1 * (max - min);
}
private void checkAutoRange_Checked(object sender, RoutedEventArgs e)
{
CheckBox ck = sender as CheckBox;
AutoRange value = ck.IsChecked.Value ? AutoRange.Always : AutoRange.Never;
sciChart.XAxis.AutoRange = value;
foreach (var yaxis in sciChart.YAxes)
yaxis.AutoRange = value;
}
private void OnChangeLineColor(object sender, RoutedEventArgs e)
{
var btn = (Button)sender;
if (btn != null)
{
string dataId = (string)btn.Tag;
var dlg = new System.Windows.Forms.ColorDialog();
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
var newColor = new System.Windows.Media.Color() { A = dlg.Color.A, B = dlg.Color.B, G = dlg.Color.G, R = dlg.Color.R };
var vm = (ProcessDataChartDataItem)DataContext;
var line = vm.RenderableSeries.ToList().Find((o) => ((SmartDataLine)o).UniqueId == dataId);
if (line != null) line.Stroke = newColor;
}
}
}
private void OnChangeDrawingItemVisibility(object sender, RoutedEventArgs e)
{
var checkbox = (CheckBox)sender;
if (checkbox != null && checkbox.IsChecked.HasValue)
{
string dataId = (string)checkbox.Tag;
var vm = (ProcessDataChartDataItem)DataContext;
var line = vm.RenderableSeries.ToList().Find((o) => ((SmartDataLine)o).UniqueId == dataId);
if (line != null)
{
line.IsVisible = checkbox.IsChecked.Value;
//vm.InvokePropertyChanged("ReflectionDataSeries");
}
}
}
private void checkConfigPanel_Checked(object sender, RoutedEventArgs e)
{
dataConfigPanelColumn.Width = new GridLength((sender as CheckBox).IsChecked.Value ? 300 : 0, GridUnitType.Pixel);
}
}
}