10 changed files with 351 additions and 61 deletions
@ -0,0 +1,17 @@ |
|||||
|
<UserControl x:Class="SunlightCentralizedControlManagement_SCCM_.View.CurveTemp" |
||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |
||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" |
||||
|
xmlns:local="clr-namespace:SunlightCentralizedControlManagement_SCCM_.View" |
||||
|
xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF" |
||||
|
xmlns:ConvertMoels="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ConvertMoels" |
||||
|
xmlns:viewmodel="clr-namespace:SunlightCentralizedControlManagement_SCCM_.ViewModel" |
||||
|
mc:Ignorable="d" |
||||
|
d:DataContext="{d:DesignInstance Type=viewmodel:CurveTempModel}" |
||||
|
d:DesignHeight="300" d:DesignWidth="400"> |
||||
|
<Grid> |
||||
|
<lvc:CartesianChart x:Name="OscChart" EasingFunction="{x:Null}" ZoomMode="X" |
||||
|
Series="{Binding Series}" YAxes="{Binding YAxes}" XAxes="{Binding XAxes}" Margin="0,0,0,0"/> |
||||
|
</Grid> |
||||
|
</UserControl> |
@ -0,0 +1,35 @@ |
|||||
|
using SunlightCentralizedControlManagement_SCCM_.ViewModel; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Data; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
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; |
||||
|
|
||||
|
namespace SunlightCentralizedControlManagement_SCCM_.View |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// CurveDiagram.xaml 的交互逻辑
|
||||
|
/// </summary>
|
||||
|
public partial class CurveTemp : UserControl |
||||
|
{ |
||||
|
public static DataTable dataTable; |
||||
|
public CurveTemp(DataTable db) |
||||
|
{ |
||||
|
InitializeComponent(); |
||||
|
|
||||
|
dataTable = db; |
||||
|
|
||||
|
DataContext = new CurveTempModel(); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,132 @@ |
|||||
|
using LiveChartsCore.SkiaSharpView; |
||||
|
using LiveChartsCore; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Data; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using CommunityToolkit.Mvvm.ComponentModel; |
||||
|
using LiveChartsCore.Kernel.Sketches; |
||||
|
using LiveChartsCore.SkiaSharpView.Painting; |
||||
|
using ScottPlot.Colormaps; |
||||
|
using System.Drawing; |
||||
|
using System.Windows.Media.TextFormatting; |
||||
|
using System.Xml.Linq; |
||||
|
using SkiaSharp; |
||||
|
using LiveChartsCore.Defaults; |
||||
|
using static System.Net.WebRequestMethods; |
||||
|
using System.Collections.ObjectModel; |
||||
|
using DyeingComputer.Properties; |
||||
|
using LiveChartsCore.Measure; |
||||
|
using LiveChartsCore.Motion; |
||||
|
using SunlightCentralizedControlManagement_SCCM_.Properties; |
||||
|
using static SunlightCentralizedControlManagement_SCCM_.UserClass.SqliteHelper; |
||||
|
using TouchSocket.Core; |
||||
|
using System.ComponentModel; |
||||
|
using System.Runtime.CompilerServices; |
||||
|
using System.Windows; |
||||
|
using SunlightCentralizedControlManagement_SCCM_.View; |
||||
|
|
||||
|
namespace SunlightCentralizedControlManagement_SCCM_.ViewModel |
||||
|
{ |
||||
|
public partial class CurveTempModel : ObservableObject//ViewModelBase
|
||||
|
{ |
||||
|
public static ISeries[] Series { get; set; } |
||||
|
public static ObservableCollection<ObservableValue> ObservableValues { get; set; } |
||||
|
//x轴时间格式
|
||||
|
public Axis[] XAxes { get; set; } = |
||||
|
{ |
||||
|
new DateTimeAxis(TimeSpan.FromSeconds(5) , date => date.ToString("HH:mm")) |
||||
|
{ |
||||
|
CrosshairLabelsBackground = SKColors.DarkGray.AsLvcColor(), |
||||
|
CrosshairLabelsPaint = new SolidColorPaint(SKColors.DarkSlateBlue, 1), |
||||
|
CrosshairPaint = new SolidColorPaint(SKColors.DarkSlateGray, 1), |
||||
|
}, |
||||
|
}; |
||||
|
//颜色
|
||||
|
private static readonly SKColor s_blue = new SKColor(25, 118, 210); |
||||
|
private static readonly SKColor s_blue_0 = new SKColor(25, 18, 210); |
||||
|
private static readonly SKColor s_blue_1 = new SKColor(25, 118, 170); |
||||
|
private static readonly SKColor s_blue_2 = new SKColor(25, 118, 130); |
||||
|
private static readonly SKColor s_blue_3 = new SKColor(25, 118, 90); |
||||
|
private static readonly SKColor s_blue_4 = new SKColor(25, 118, 50); |
||||
|
private static readonly SKColor s_red = new SKColor(229, 57, 53); |
||||
|
private static readonly SKColor s_red_1 = new SKColor(189, 57, 53); |
||||
|
private static readonly SKColor s_red_2 = new SKColor(149, 57, 53); |
||||
|
private static readonly SKColor s_red_3 = new SKColor(109, 57, 53); |
||||
|
private static readonly SKColor s_yellow = new SKColor(198, 167, 0); |
||||
|
public ICartesianAxis[] YAxes { get; set; } ={ |
||||
|
new Axis //y在此轴上缩放
|
||||
|
{ |
||||
|
MinLimit =0, |
||||
|
MaxLimit =160, |
||||
|
Name = Properties.Resources.Temperature +" ( °C )", |
||||
|
NameTextSize = 15, |
||||
|
NamePaint = new SolidColorPaint(s_blue), |
||||
|
NamePadding = new LiveChartsCore.Drawing.Padding(0, 20), |
||||
|
Padding = new LiveChartsCore.Drawing.Padding(0, 0, 20, 0), |
||||
|
TextSize = 12, |
||||
|
LabelsPaint = new SolidColorPaint(s_blue), |
||||
|
TicksPaint = new SolidColorPaint(s_blue), |
||||
|
SubticksPaint = new SolidColorPaint(s_blue), |
||||
|
DrawTicksPath = true, |
||||
|
CrosshairSnapEnabled = true, |
||||
|
Position = LiveChartsCore.Measure.AxisPosition.Start |
||||
|
},//温度轴
|
||||
|
|
||||
|
}; |
||||
|
|
||||
|
private static Random _r = new Random(); |
||||
|
private static ObservableCollection<DateTimePoint> MST_values; |
||||
|
static DataTable CDB = new DataTable(); |
||||
|
private static int CDB_Count;//长度
|
||||
|
|
||||
|
public CurveTempModel() |
||||
|
{ |
||||
|
CDB = View.CurveTemp.dataTable; |
||||
|
Curve(); |
||||
|
} |
||||
|
public static void Curve() |
||||
|
{ |
||||
|
CDB_Count = CDB.Rows.Count; |
||||
|
var MTT_items = new List<DateTimePoint>(); |
||||
|
var MTL_items = new List<DateTimePoint>(); |
||||
|
var MTH_items = new List<DateTimePoint>(); |
||||
|
var MST_items = new List<DateTimePoint>(); |
||||
|
var MUT_items = new List<DateTimePoint>(); |
||||
|
var STTA_items = new List<DateTimePoint>(); |
||||
|
var STLA_items = new List<DateTimePoint>(); |
||||
|
var STTB_items = new List<DateTimePoint>(); |
||||
|
var STLB_items = new List<DateTimePoint>(); |
||||
|
var STTC_items = new List<DateTimePoint>(); |
||||
|
var STLC_items = new List<DateTimePoint>(); |
||||
|
for (var i = 0; i < CDB_Count; i++) |
||||
|
{ |
||||
|
DateTime TIME = Convert.ToDateTime(CDB.Rows[i].Field<string>("Time")); |
||||
|
MST_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MST"))); |
||||
|
} |
||||
|
|
||||
|
MST_values = new ObservableCollection<DateTimePoint>(MST_items); |
||||
|
|
||||
|
Series = new ISeries[] |
||||
|
{ |
||||
|
|
||||
|
new LineSeries<DateTimePoint> |
||||
|
{ |
||||
|
Name = Resources.Target + Resources.Temperature, |
||||
|
Values = MST_values, |
||||
|
Stroke = new SolidColorPaint(s_blue_0, 2), |
||||
|
GeometrySize = 0, |
||||
|
GeometryStroke = new SolidColorPaint(s_blue_0, 2), |
||||
|
Fill = null, |
||||
|
LineSmoothness = 0, |
||||
|
ScalesYAt = 0, |
||||
|
}, //目标温度
|
||||
|
|
||||
|
}; |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue