-
Notifications
You must be signed in to change notification settings - Fork 11
/
UsingTooltipModifierTooltipsFragment.cs
95 lines (83 loc) · 3.87 KB
/
UsingTooltipModifierTooltipsFragment.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using System.Collections.Generic;
using Android.Views.Animations;
using SciChart.Charting.Model;
using SciChart.Charting.Model.DataSeries;
using SciChart.Charting.Modifiers;
using SciChart.Charting.Visuals;
using SciChart.Charting.Visuals.Animations;
using SciChart.Charting.Visuals.Axes;
using SciChart.Charting.Visuals.PointMarkers;
using SciChart.Charting.Visuals.RenderableSeries;
using SciChart.Data.Model;
using SciChart.Drawing.Common;
using Xamarin.Examples.Demo.Data;
using Xamarin.Examples.Demo;
using Xamarin.Examples.Demo.Droid.Extensions;
using Xamarin.Examples.Demo.Droid.Fragments.Base;
using Xamarin.Examples.Demo;
using Xamarin.Examples.Demo.Utils;
namespace Xamarin.Examples.Demo.Droid.Fragments.Examples
{
[ExampleDefinition("Using TooltipModifier Tooltips", description: "Demonstrates a simple tooltip", icon: ExampleIcon.Annotations)]
public class UsingTooltipModifierTooltipsFragment : ExampleBaseFragment
{
public override int ExampleLayoutId => Resource.Layout.Example_Single_Chart_Fragment;
public SciChartSurface Surface => View.FindViewById<SciChartSurface>(Resource.Id.chart);
protected override void InitExample()
{
var xAxis = new NumericAxis(Activity) {GrowBy = new DoubleRange(0.1, 0.1)};
var yAxis = new NumericAxis(Activity) {GrowBy = new DoubleRange(0.1, 0.1)};
var ds1 = new XyDataSeries<double, double> {SeriesName = "Lissajous Curve", AcceptsUnsortedData = true};
var ds2 = new XyDataSeries<double, double> {SeriesName = "Sinewave", AcceptsUnsortedData = true};
var ds1Points = DataManager.Instance.GetLissajousCurve(0.8, 0.2, 0.43, 500);
var ds2Points = DataManager.Instance.GetSinewave(1.5, 1.0, 500);
var scaledXValues = GetScaledValues(ds1Points.XData);
ds1.Append(scaledXValues, ds1Points.YData);
ds2.Append(ds2Points.XData, ds2Points.YData);
var rs1 = new FastLineRenderableSeries
{
DataSeries = ds1,
StrokeStyle = new SolidPenStyle(ColorUtil.SteelBlue, 2f.ToDip(Activity)),
PointMarker = new EllipsePointMarker
{
Width = 5.ToDip(Activity),
Height = 5.ToDip(Activity),
StrokeStyle = new SolidPenStyle(ColorUtil.SteelBlue, 2f.ToDip(Activity)),
FillStyle = new SolidBrushStyle(ColorUtil.SteelBlue)
}
};
var rs2 = new FastLineRenderableSeries
{
DataSeries = ds2,
StrokeStyle = new SolidPenStyle(0xFFFF3333, 2f.ToDip(Activity)),
PointMarker = new EllipsePointMarker
{
Width = 5.ToDip(Activity),
Height = 5.ToDip(Activity),
StrokeStyle = new SolidPenStyle(0xFFFF3333, 2f.ToDip(Activity)),
FillStyle = new SolidBrushStyle(0xFFFF3333)
}
};
using (Surface.SuspendUpdates())
{
Surface.XAxes.Add(xAxis);
Surface.YAxes.Add(yAxis);
Surface.RenderableSeries = new RenderableSeriesCollection { rs1, rs2 };
Surface.ChartModifiers.Add(new TooltipModifier {UseInterpolation = true});
new OpacityAnimatorBuilder(rs1) { Duration = 1000, StartDelay = 600 }.Start();
new OpacityAnimatorBuilder(rs2) { Duration = 1000, StartDelay = 600 }.Start();
}
}
private static IList<double> GetScaledValues(IList<double> values)
{
var size = values.Count;
var scaledValues = new List<double>(size);
for (var i = 0; i < size; i++)
{
var value = values[i];
scaledValues.Add((value + 1)*5);
}
return scaledValues;
}
}
}