using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.Charting; namespace grapher { public class ChartXY { public const int ChartSeparationHorizontal = 10; public ChartXY(Chart chartX, Chart chartY) { ChartX = chartX; ChartY = chartY; ChartY.Top = ChartX.Top; ChartY.Height = ChartX.Height; ChartY.Width = ChartX.Width; ChartY.Left = ChartX.Left + ChartX.Width + ChartSeparationHorizontal; SetupChart(ChartX); SetupChart(ChartY); } public Chart ChartX { get; } public Chart ChartY { get; } public static void SetupChart(Chart chart) { chart.ChartAreas[0].AxisX.RoundAxisValues(); chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true; chart.ChartAreas[0].AxisY.ScaleView.Zoomable = true; chart.ChartAreas[0].AxisY.ScaleView.MinSize = 0.01; chart.ChartAreas[0].AxisY.ScaleView.SmallScrollSize = 0.001; chart.ChartAreas[0].CursorY.Interval = 0.001; chart.ChartAreas[0].CursorX.AutoScroll = true; chart.ChartAreas[0].CursorY.AutoScroll = true; chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true; chart.ChartAreas[0].CursorY.IsUserSelectionEnabled = true; chart.ChartAreas[0].CursorX.IsUserEnabled = true; chart.ChartAreas[0].CursorY.IsUserEnabled = true; } public int Height { get { return ChartX.Height; } } public int Width { get { if (Combined) { return ChartX.Width; } else { return ChartY.Left + ChartY.Width - ChartX.Left; } } } public int Top { get { return ChartX.Height; } } public int Left { get { return ChartX.Left; } } public bool Combined { get; private set; } public void SetCombined() { if (!Combined) { ChartY.Hide(); Combined = true; } } public void SetSeparate() { if (Combined) { if (ChartX.Visible) { ChartY.Show(); } Combined = false; } } public void Hide() { ChartX.Hide(); ChartY.Hide(); } public void Show() { ChartX.Show(); if (!Combined) { ChartY.Show(); } } public void SetTop(int top) { ChartX.Top = top; ChartY.Top = top; } public void SetHeight(int height) { ChartX.Height = height; ChartY.Height = height; } } }