@@ -0,0 +1,94 @@
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
// <copyright file="MainViewModel.cs" company="OxyPlot">
|
||||
// Copyright (c) 2014 OxyPlot contributors
|
||||
// </copyright>
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
namespace AnimationsDemo
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using OxyPlot;
|
||||
using OxyPlot.Annotations;
|
||||
using OxyPlot.Axes;
|
||||
using OxyPlot.Series;
|
||||
|
||||
public class LinearBarViewModel : AnimationViewModelBase
|
||||
{
|
||||
public LinearBarViewModel()
|
||||
{
|
||||
var pnls = new List<Pnl>();
|
||||
|
||||
var random = new Random(31);
|
||||
var dateTime = DateTime.Today.Add(TimeSpan.FromHours(9));
|
||||
for (var pointIndex = 0; pointIndex < 50; pointIndex++)
|
||||
{
|
||||
pnls.Add(new Pnl
|
||||
{
|
||||
Time = dateTime,
|
||||
Value = -200 + random.Next(1000),
|
||||
});
|
||||
dateTime = dateTime.AddMinutes(1);
|
||||
}
|
||||
|
||||
var minimum = pnls.Min(x => x.Value);
|
||||
var maximum = pnls.Max(x => x.Value);
|
||||
|
||||
var plotModel = this.PlotModel;
|
||||
plotModel.Title = "Linear Bar Series Animation Demo";
|
||||
|
||||
var series = new LinearBarSeries
|
||||
{
|
||||
Title = "P & L",
|
||||
ItemsSource = pnls,
|
||||
DataFieldX = "Time",
|
||||
DataFieldY = "Value",
|
||||
FillColor = OxyColor.Parse("#454CAF50"),
|
||||
StrokeColor = OxyColor.Parse("#4CAF50"),
|
||||
StrokeThickness = 1,
|
||||
BarWidth = 5
|
||||
};
|
||||
plotModel.Series.Add(series);
|
||||
|
||||
var annotation = new LineAnnotation
|
||||
{
|
||||
Type = LineAnnotationType.Horizontal,
|
||||
Y = 0
|
||||
};
|
||||
plotModel.Annotations.Add(annotation);
|
||||
|
||||
var dateTimeAxis = new DateTimeAxis
|
||||
{
|
||||
Position = AxisPosition.Bottom,
|
||||
IntervalType = DateTimeIntervalType.Hours,
|
||||
IntervalLength = 50
|
||||
};
|
||||
plotModel.Axes.Add(dateTimeAxis);
|
||||
|
||||
var margin = (maximum - minimum) * 0.05;
|
||||
|
||||
var valueAxis = new LinearAxis
|
||||
{
|
||||
Position = AxisPosition.Left,
|
||||
Minimum = minimum - margin,
|
||||
Maximum = maximum + margin,
|
||||
};
|
||||
plotModel.Axes.Add(valueAxis);
|
||||
}
|
||||
|
||||
public override bool SupportsEasingFunction { get { return true; } }
|
||||
|
||||
public override async Task AnimateAsync(AnimationSettings animationSettings)
|
||||
{
|
||||
var plotModel = this.PlotModel;
|
||||
var series = plotModel.Series.First() as LinearBarSeries;
|
||||
if (series != null)
|
||||
{
|
||||
await plotModel.AnimateSeriesAsync(series, animationSettings);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user