sc 10 months ago
parent
commit
c70c5ce1fb
  1. 2
      View/ProductionPlanningView.xaml
  2. 1
      View/ProductionPlanningView.xaml.cs
  3. 86
      ViewModel/ProductionPlanningModel.cs

2
View/ProductionPlanningView.xaml

@ -21,7 +21,7 @@
<RowDefinition Height="60"/> <RowDefinition Height="60"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid Grid.Row="0"> <Grid Grid.Row="0">
<lvc:CartesianChart XAxes="{Binding XAxes}" /> <lvc:CartesianChart x:Name="ch" XAxes="{Binding XAxes}" YAxes="{Binding YAxes}" Series="{Binding Series}" />
</Grid> </Grid>

1
View/ProductionPlanningView.xaml.cs

@ -44,6 +44,7 @@ namespace SunlightCentralizedControlManagement_SCCM_.View
{ {
InitializeComponent(); InitializeComponent();
DataContext = new ProductionPlanningModel(); DataContext = new ProductionPlanningModel();
ch.ZoomMode = LiveChartsCore.Measure.ZoomAndPanMode.PanX | LiveChartsCore.Measure.ZoomAndPanMode.ZoomY;
} }
private SQLiteHelper SQLiteHelpers = null; //定义数据库 private SQLiteHelper SQLiteHelpers = null; //定义数据库

86
ViewModel/ProductionPlanningModel.cs

@ -28,62 +28,70 @@ using System.Runtime.CompilerServices;
using System.Windows; using System.Windows;
using SunlightCentralizedControlManagement_SCCM_.View; using SunlightCentralizedControlManagement_SCCM_.View;
using LiveChartsCore.SkiaSharpView.Painting.Effects; using LiveChartsCore.SkiaSharpView.Painting.Effects;
using LiveChartsCore.Drawing;
using LiveChartsCore.SkiaSharpView.Drawing.Geometries;
using System.Windows.Documents;
using System.Reflection;
namespace SunlightCentralizedControlManagement_SCCM_.ViewModel namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
{ {
public partial class ProductionPlanningModel : ObservableObject//ViewModelBase public partial class ProductionPlanningModel : ObservableObject//ViewModelBase
{ {
//x轴时间格式 //x轴时间格式
public Axis[] XAxes { get; set; } = public Axis[] XAxes { get; set; } =
{ {
new DateTimeAxis(TimeSpan.FromSeconds(5) , date => date.ToString("yyyy-MM-dd HH:mm")) new DateTimeAxis(TimeSpan.FromSeconds(5) , date => date.ToString("yyyy-MM-dd HH:mm"))
{ {
// CrosshairLabelsBackground = SKColors.DarkGray.AsLvcColor(), CrosshairLabelsBackground = SKColors.DarkGray.AsLvcColor(),
// CrosshairLabelsPaint = new SolidColorPaint(SKColors.DarkSlateBlue, 1), CrosshairLabelsPaint = new SolidColorPaint(SKColors.DarkSlateBlue, 1),
// CrosshairPaint = new SolidColorPaint(SKColors.DarkSlateGray, 1), CrosshairPaint = new SolidColorPaint(SKColors.DarkSlateGray, 1),
}, },
}; };
public Axis[] YAxes { get; set; } =
{
new Axis
{
MinLimit = 0,
// TextSize = 20,
LabelsDensity = 1,
Labels = MainWindowViewModel.Machines.AsEnumerable().Select(row=> row.Field<string>("name")).ToList(),//转换列名为机台
}
};
public RectangularSection[] Sections { get; set; } = public ProductionPlanningModel()
{
new RectangularSection
{ {
Yi = 8, var r = new Random();
Yj = 8, var values1 = new ObservableCollection<ObservablePoint>();
Stroke = new SolidColorPaint
for (var i = 0; i < 20; i++)
{ {
Color = SKColors.Red, values1.Add(new ObservablePoint(r.Next(10, 20), r.Next(0, 20)));
StrokeThickness = 3,
PathEffect = new DashEffect(new float[] { 6, 6 })
} }
},
new RectangularSection
{
Xi = 4,
Xj = 6,
Fill = new SolidColorPaint { Color = SKColors.Blue.WithAlpha(20) }
},
};
public ISeries[] Series { get; set; } = Series = new ISeries[]
{
new ScatterSeries<ObservablePoint>
{
GeometrySize = 10,
Stroke = new SolidColorPaint ((SKColor)2.2, (float)5.4),
Fill = null,
Values = new ObservablePoint[]
{ {
/* new(2.2, 5.4), new(4.5, 2.5), new(4.2, 7.4), // use the second type parameter to specify the geometry to draw for every point
new(6.4, 9.9), new(4.2, 9.2), new(5.8, 3.5), // there are already many predefined geometries in the
new(7.3, 5.8), new(8.9, 3.9), new(6.1, 4.6), // LiveChartsCore.SkiaSharpView.Drawing.Geometries namespace
new(9.4, 7.7), new(8.4, 8.5), new(3.6, 9.6), new ScatterSeries<ObservablePoint, RoundedRectangleGeometry>
new(4.4, 6.3), new(5.8, 4.8), new(6.9, 3.4), {
new(7.6, 1.8), new(8.3, 8.3), new(9.9, 5.2), Values = values1,
new(8.1, 4.7), new(7.4, 3.9), new(6.8, 2.3)*/ Stroke = null,
} GeometrySize = 10,
},
// You can also use SVG paths to draw the geometry
// LiveCharts already provides some predefined paths in the SVGPoints class.
// you can declare your own gemetry and use the SkiaSharp api to draw it
};
} }
};
public ISeries[] Series { get; set; }
} }
} }

Loading…
Cancel
Save