UI动画优化
This commit is contained in:
parent
6883c8046d
commit
5f97c381ab
@ -18,12 +18,12 @@
|
|||||||
<lvc:CartesianChart Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Name="flowChart" Series="{Binding Series}" LegendLocation="None" AnimationsSpeed="0:0:1" >
|
<lvc:CartesianChart Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Name="flowChart" Series="{Binding Series}" LegendLocation="None" AnimationsSpeed="0:0:1" >
|
||||||
|
|
||||||
<lvc:CartesianChart.AxisX >
|
<lvc:CartesianChart.AxisX >
|
||||||
<lvc:Axis Unit="1000" LabelsRotation="0" Foreground="#222" LabelFormatter="{Binding XFormatter}">
|
<lvc:Axis Foreground="#222" Unit="1000" LabelFormatter="{Binding XFormatter}">
|
||||||
</lvc:Axis>
|
</lvc:Axis>
|
||||||
</lvc:CartesianChart.AxisX>
|
</lvc:CartesianChart.AxisX>
|
||||||
|
|
||||||
<lvc:CartesianChart.AxisY>
|
<lvc:CartesianChart.AxisY>
|
||||||
<lvc:Axis Foreground="#222" MinValue="0" LabelFormatter="{Binding YFormatter}">
|
<lvc:Axis Foreground="#222" MinValue="0" LabelFormatter="{Binding YFormatter}">
|
||||||
</lvc:Axis>
|
</lvc:Axis>
|
||||||
</lvc:CartesianChart.AxisY>
|
</lvc:CartesianChart.AxisY>
|
||||||
|
|
||||||
|
|||||||
@ -18,14 +18,16 @@ namespace FastGithub.UI
|
|||||||
{
|
{
|
||||||
Title = "上行速率",
|
Title = "上行速率",
|
||||||
PointGeometry = null,
|
PointGeometry = null,
|
||||||
Values = new ChartValues<RateItem>()
|
LineSmoothness = 1D,
|
||||||
|
Values = new ChartValues<RateTick>()
|
||||||
};
|
};
|
||||||
|
|
||||||
private readonly LineSeries writeSeries = new LineSeries()
|
private readonly LineSeries writeSeries = new LineSeries()
|
||||||
{
|
{
|
||||||
Title = "下行速率",
|
Title = "下行速率",
|
||||||
PointGeometry = null,
|
PointGeometry = null,
|
||||||
Values = new ChartValues<RateItem>()
|
LineSmoothness = 1D,
|
||||||
|
Values = new ChartValues<RateTick>()
|
||||||
};
|
};
|
||||||
|
|
||||||
private static DateTime GetDateTime(double timestamp) => new DateTime(1970, 1, 1).Add(TimeSpan.FromMilliseconds(timestamp)).ToLocalTime();
|
private static DateTime GetDateTime(double timestamp) => new DateTime(1970, 1, 1).Add(TimeSpan.FromMilliseconds(timestamp)).ToLocalTime();
|
||||||
@ -33,7 +35,7 @@ namespace FastGithub.UI
|
|||||||
private static double GetTimestamp(DateTime dateTime) => dateTime.ToUniversalTime().Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds;
|
private static double GetTimestamp(DateTime dateTime) => dateTime.ToUniversalTime().Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds;
|
||||||
|
|
||||||
|
|
||||||
public SeriesCollection Series { get; } = new SeriesCollection(Mappers.Xy<RateItem>().X(item => item.Timestamp).Y(item => item.Rate));
|
public SeriesCollection Series { get; } = new SeriesCollection(Mappers.Xy<RateTick>().X(item => item.Timestamp).Y(item => item.Rate));
|
||||||
|
|
||||||
public Func<double, string> XFormatter { get; } = timestamp => GetDateTime(timestamp).ToString("HH:mm:ss");
|
public Func<double, string> XFormatter { get; } = timestamp => GetDateTime(timestamp).ToString("HH:mm:ss");
|
||||||
|
|
||||||
@ -47,10 +49,10 @@ namespace FastGithub.UI
|
|||||||
this.Series.Add(this.writeSeries);
|
this.Series.Add(this.writeSeries);
|
||||||
|
|
||||||
this.DataContext = this;
|
this.DataContext = this;
|
||||||
this.InitFlowChart();
|
this.InitFlowChartAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void InitFlowChart()
|
private async void InitFlowChartAsync()
|
||||||
{
|
{
|
||||||
using var httpClient = new HttpClient();
|
using var httpClient = new HttpClient();
|
||||||
while (this.Dispatcher.HasShutdownStarted == false)
|
while (this.Dispatcher.HasShutdownStarted == false)
|
||||||
@ -83,8 +85,8 @@ namespace FastGithub.UI
|
|||||||
this.textBlockWrite.Text = FlowStatistics.ToNetworkSizeString(flowStatistics.TotalWrite);
|
this.textBlockWrite.Text = FlowStatistics.ToNetworkSizeString(flowStatistics.TotalWrite);
|
||||||
|
|
||||||
var timestamp = GetTimestamp(DateTime.Now);
|
var timestamp = GetTimestamp(DateTime.Now);
|
||||||
this.readSeries.Values.Add(new RateItem(flowStatistics.ReadRate, timestamp));
|
this.readSeries.Values.Add(new RateTick(flowStatistics.ReadRate, timestamp));
|
||||||
this.writeSeries.Values.Add(new RateItem(flowStatistics.WriteRate, timestamp));
|
this.writeSeries.Values.Add(new RateTick(flowStatistics.WriteRate, timestamp));
|
||||||
|
|
||||||
if (this.readSeries.Values.Count > 60)
|
if (this.readSeries.Values.Count > 60)
|
||||||
{
|
{
|
||||||
@ -93,13 +95,13 @@ namespace FastGithub.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class RateItem
|
private class RateTick
|
||||||
{
|
{
|
||||||
public double Rate { get; }
|
public double Rate { get; }
|
||||||
|
|
||||||
public double Timestamp { get; }
|
public double Timestamp { get; }
|
||||||
|
|
||||||
public RateItem(double rate, double timestamp)
|
public RateTick(double rate, double timestamp)
|
||||||
{
|
{
|
||||||
this.Rate = rate;
|
this.Rate = rate;
|
||||||
this.Timestamp = timestamp;
|
this.Timestamp = timestamp;
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using System.Collections.ObjectModel;
|
using System;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
|
|
||||||
namespace FastGithub.UI
|
namespace FastGithub.UI
|
||||||
@ -19,16 +20,22 @@ namespace FastGithub.UI
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async void InitUdpLoggerAsync()
|
private async void InitUdpLoggerAsync()
|
||||||
{
|
{
|
||||||
while (this.Dispatcher.HasShutdownStarted == false)
|
while (this.Dispatcher.HasShutdownStarted == false)
|
||||||
{
|
{
|
||||||
var log = await UdpLogger.GetUdpLogAsync();
|
try
|
||||||
if (log != null)
|
{
|
||||||
|
var log = await UdpLogger.GetUdpLogAsync();
|
||||||
|
if (log != null)
|
||||||
|
{
|
||||||
|
this.LogList.Add(log);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
{
|
{
|
||||||
this.LogList.Add(log);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MenuItem_Copy_Click(object sender, System.Windows.RoutedEventArgs e)
|
private void MenuItem_Copy_Click(object sender, System.Windows.RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -149,6 +149,7 @@ namespace FastGithub
|
|||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
this.logger.LogInformation($"正在主动关闭,因为父进程已退出");
|
||||||
await this.host.StopAsync(cancellationToken);
|
await this.host.StopAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user