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"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<lvc:CartesianChart XAxes="{Binding XAxes}" />
<lvc:CartesianChart x:Name="ch" XAxes="{Binding XAxes}" YAxes="{Binding YAxes}" Series="{Binding Series}" />
</Grid>

1
View/ProductionPlanningView.xaml.cs

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

86
ViewModel/ProductionPlanningModel.cs

@ -28,62 +28,70 @@ using System.Runtime.CompilerServices;
using System.Windows;
using SunlightCentralizedControlManagement_SCCM_.View;
using LiveChartsCore.SkiaSharpView.Painting.Effects;
using LiveChartsCore.Drawing;
using LiveChartsCore.SkiaSharpView.Drawing.Geometries;
using System.Windows.Documents;
using System.Reflection;
namespace SunlightCentralizedControlManagement_SCCM_.ViewModel
{
{
public partial class ProductionPlanningModel : ObservableObject//ViewModelBase
{
//x轴时间格式
public Axis[] XAxes { get; set; } =
{
new DateTimeAxis(TimeSpan.FromSeconds(5) , date => date.ToString("yyyy-MM-dd HH:mm"))
{
// CrosshairLabelsBackground = SKColors.DarkGray.AsLvcColor(),
// CrosshairLabelsPaint = new SolidColorPaint(SKColors.DarkSlateBlue, 1),
// CrosshairPaint = new SolidColorPaint(SKColors.DarkSlateGray, 1),
{
CrosshairLabelsBackground = SKColors.DarkGray.AsLvcColor(),
CrosshairLabelsPaint = new SolidColorPaint(SKColors.DarkSlateBlue, 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; } =
{
new RectangularSection
public ProductionPlanningModel()
{
Yi = 8,
Yj = 8,
Stroke = new SolidColorPaint
var r = new Random();
var values1 = new ObservableCollection<ObservablePoint>();
for (var i = 0; i < 20; i++)
{
Color = SKColors.Red,
StrokeThickness = 3,
PathEffect = new DashEffect(new float[] { 6, 6 })
values1.Add(new ObservablePoint(r.Next(10, 20), r.Next(0, 20)));
}
},
new RectangularSection
{
Xi = 4,
Xj = 6,
Fill = new SolidColorPaint { Color = SKColors.Blue.WithAlpha(20) }
},
};
public ISeries[] Series { get; set; } =
{
new ScatterSeries<ObservablePoint>
{
GeometrySize = 10,
Stroke = new SolidColorPaint ((SKColor)2.2, (float)5.4),
Fill = null,
Values = new ObservablePoint[]
Series = new ISeries[]
{
/* new(2.2, 5.4), new(4.5, 2.5), new(4.2, 7.4),
new(6.4, 9.9), new(4.2, 9.2), new(5.8, 3.5),
new(7.3, 5.8), new(8.9, 3.9), new(6.1, 4.6),
new(9.4, 7.7), new(8.4, 8.5), new(3.6, 9.6),
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),
new(8.1, 4.7), new(7.4, 3.9), new(6.8, 2.3)*/
}
// use the second type parameter to specify the geometry to draw for every point
// there are already many predefined geometries in the
// LiveChartsCore.SkiaSharpView.Drawing.Geometries namespace
new ScatterSeries<ObservablePoint, RoundedRectangleGeometry>
{
Values = values1,
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