/// <summary> /// Initializes a new instance of the <see cref="PolarChart"/> class. /// </summary> public PolarChart() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeComponent(); _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _angleObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _radiusObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); Loaded += OnLoaded; Unloaded += OnUnloaded; SetValue(AngleAxesProperty, new ObservableCollection <IPolarAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultPolarAxis() }); SetValue(RadiusAxesProperty, new ObservableCollection <IPolarAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultPolarAxis() }); SetValue(SeriesProperty, new ObservableCollection <ISeries>()); }
public Chart() { motionCanvas = new MotionCanvas(); SuspendLayout(); motionCanvas.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; motionCanvas.FramesPerSecond = 90D; motionCanvas.Location = new Point(0, 0); motionCanvas.Name = "motionCanvas"; motionCanvas.Size = new Size(150, 150); motionCanvas.TabIndex = 0; motionCanvas.Resize += OnResized; motionCanvas.MouseMove += OnMouseMove; AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; Controls.Add(motionCanvas); Name = "CartesianChart"; ResumeLayout(false); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetStylesBuilder <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ConstructChart(this); InitializeCore(); mouseMoveThrottler = new ActionThrottler(MouseMoveThrottlerUnlocked, TimeSpan.FromMilliseconds(10)); }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } _activeMap = Maps.GetWorldMap <SkiaSharpDrawingContext>(); _core = new GeoMap <SkiaSharpDrawingContext>(this); _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); var c = Controls[0].Controls[0]; c.MouseDown += OnMouseDown; c.MouseMove += OnMouseMove; c.MouseUp += OnMouseUp; c.MouseLeave += OnMouseLeave; c.MouseWheel += OnMouseWheel; Resize += GeoMap_Resize; }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } _core = new GeoMap <SkiaSharpDrawingContext>(this); _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); _seriesObserver = new CollectionDeepObserver <IGeoSeries>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); Background = new SolidColorBrush(new Color(0, 0, 0, 0)); PointerWheelChanged += OnPointerWheelChanged; PointerPressed += OnPointerPressed; PointerMoved += OnPointerMoved; PointerLeave += OnPointerLeave; //Shapes = Enumerable.Empty<MapShape<SkiaSharpDrawingContext>>(); ActiveMap = Maps.GetWorldMap <SkiaSharpDrawingContext>(); SyncContext = new object(); DetachedFromVisualTree += GeoMap_DetachedFromVisualTree; }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } _core = new GeoMap <SkiaSharpDrawingContext>(this); canvas.SkCanvasView.EnableTouchEvents = true; canvas.SkCanvasView.Touch += OnSkCanvasTouched; SizeChanged += GeoMap_SizeChanged; _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); _seriesObserver = new CollectionDeepObserver <IGeoSeries>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); SetValue(ShapesProperty, Enumerable.Empty <IMapElement>()); SetValue(SeriesProperty, Enumerable.Empty <IGeoSeries>()); SetValue(ActiveMapProperty, Maps.GetWorldMap <SkiaSharpDrawingContext>()); SetValue(SyncContextProperty, new object()); }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } _core = new GeoMap <SkiaSharpDrawingContext>(this); PointerPressed += OnPointerPressed; PointerMoved += OnPointerMoved; PointerReleased += OnPointerReleased; PointerWheelChanged += OnWheelChanged; PointerExited += OnPointerExited; SizeChanged += GeoMap_SizeChanged; _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core.Update(), true); _seriesObserver = new CollectionDeepObserver <IGeoSeries>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core.Update(), true); SetValue(ShapesProperty, Enumerable.Empty <MapShape <SkiaSharpDrawingContext> >()); SetValue(SeriesProperty, Enumerable.Empty <IGeoSeries>()); SetValue(ActiveMapProperty, Maps.GetWorldMap <SkiaSharpDrawingContext>()); SetValue(SyncContextProperty, new object()); Unloaded += GeoMap_Unloaded; }
/// <summary> /// Initializes a new instance of the <see cref="GeoMap"/> class. /// </summary> public GeoMap() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } MouseDown += OnMouseDown; MouseMove += OnMouseMove; MouseUp += OnMouseUp; MouseLeave += OnMouseLeave; MouseWheel += OnMouseWheel; SizeChanged += GeoMap_SizeChanged; _shapesObserver = new CollectionDeepObserver <IMapElement>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); _seriesObserver = new CollectionDeepObserver <IGeoSeries>( (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(), (object?sender, PropertyChangedEventArgs e) => _core?.Update(), true); SetCurrentValue(ShapesProperty, Enumerable.Empty <MapShape <SkiaSharpDrawingContext> >()); SetCurrentValue(SeriesProperty, Enumerable.Empty <IGeoSeries>()); SetCurrentValue(ActiveMapProperty, Maps.GetWorldMap <SkiaSharpDrawingContext>()); SetCurrentValue(SyncContextProperty, new object()); Unloaded += GeoMap_Unloaded; }
public MainWindowVM() { /* * only for design * */ LiveCharts.Configure(a => a.HasMap <DataModel>((b, c) => { c.PrimaryValue = (float)b.Value; c.SecondaryValue = b.Second; })); }
/// <summary> /// Called when the control initializes. /// </summary> protected override void OnInitialized() { base.OnInitialized(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } _activeMap = Maps.GetWorldMap <SkiaSharpDrawingContext>(); }
public ViewModel() { // you must normally call this when the application starts. LiveCharts.Configure(config => config.HasMap <LogaritmicPoint>((model, point) => { point.SecondaryValue = (float)model.X; point.PrimaryValue = (float)Math.Log(model.Y, s_logBase); })); }
/// <summary> /// Initializes a new instance of the <see cref="Axis"/> class. /// </summary> public Axis() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); initializer.ApplyStyleToAxis(this); }
public Axis() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetStylesBuilder <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetInitializer(); initializer.ConstructAxis(this); }
/// <summary> /// Initializes a new instance of the <see cref="PieChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public PieChart() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); SizeChanged += OnSizeChanged; _seriesObserver = new CollectionDeepObserver <ISeries>( (object sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } MainThread.BeginInvokeOnMainThread(() => core.Update()); }, (object sender, PropertyChangedEventArgs e) => { if (core == null) { return; } MainThread.BeginInvokeOnMainThread(() => core.Update()); }); Series = new ObservableCollection <ISeries>(); canvas.SkCanvasView.EnableTouchEvents = true; canvas.SkCanvasView.Touch += OnSkCanvasTouched; if (core == null) { throw new Exception("Core not found!"); } core.Measuring += OnCoreMeasuring; core.UpdateStarted += OnCoreUpdateStarted; core.UpdateFinished += OnCoreUpdateFinished; }
/// <summary> /// Initializes a new instance of the <see cref="PieChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public PieChart() { InitializeComponent(); // workaround to detect mouse events. // Avalonia do not seem to detect events if background is not set. Background = new SolidColorBrush(Colors.Transparent); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); AttachedToVisualTree += OnAttachedToVisualTree; _seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (_core is null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } _core.Update(); }, (object?sender, PropertyChangedEventArgs e) => { if (_core is null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } _core.Update(); }); Series = new ObservableCollection <ISeries>(); PointerLeave += Chart_PointerLeave; PointerMoved += Chart_PointerMoved; PointerPressed += Chart_PointerPressed; DetachedFromVisualTree += PieChart_DetachedFromVisualTree; }
public CartesianChart() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetStylesBuilder <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ConstructChart(this); InitializeCore(); SizeChanged += OnSizeChanged; mouseMoveThrottler = new ActionThrottler(MouseMoveThrottlerUnlocked, TimeSpan.FromMilliseconds(10)); seriesObserver = new CollectionDeepObserver <ISeries>( (object sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } MainThread.BeginInvokeOnMainThread(core.Update); }, (object sender, PropertyChangedEventArgs e) => { if (core == null) { return; } MainThread.BeginInvokeOnMainThread(core.Update); }, true); XAxes = new List <IAxis>() { new Axis() }; YAxes = new List <IAxis>() { new Axis() }; Series = new ObservableCollection <ISeries>(); }
/// <summary> /// Initializes a new instance of the <see cref="DrawMarginFrame"/> class. /// </summary> public DrawMarginFrame() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); foreach (var rule in initializer.DrawMarginFrameBuilder) { rule(this); } }
/// <summary> /// Initializes a new instance of the <see cref="CartesianChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public CartesianChart() { InitializeComponent(); // workaround to detect mouse events. // Avalonia do not seem to detect pointer events if background is not set. ((IChartView)this).BackColor = LvcColor.FromArgb(0, 0, 0, 0); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); AttachedToVisualTree += CartesianChart_AttachedToVisualTree; _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _xObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _yObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _sectionsObserver = new CollectionDeepObserver <Section <SkiaSharpDrawingContext> >( OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); XAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultCartesianAxis() }; YAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultCartesianAxis() }; Series = new ObservableCollection <ISeries>(); PointerPressed += CartesianChart_PointerPressed; PointerMoved += CartesianChart_PointerMoved; // .. special case in avalonia for pointer released... he handle our own pointer capture. PointerWheelChanged += CartesianChart_PointerWheelChanged; PointerLeave += CartesianChart_PointerLeave; DetachedFromVisualTree += CartesianChart_DetachedFromVisualTree; }
/// <summary> /// Initializes a new instance of the <see cref="CartesianChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public CartesianChart() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); SizeChanged += OnSizeChanged; _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _xObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _yObserver = new CollectionDeepObserver <ICartesianAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _sectionsObserver = new CollectionDeepObserver <Section <SkiaSharpDrawingContext> >( OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); XAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultCartesianAxis() }; YAxes = new List <ICartesianAxis>() { LiveCharts.CurrentSettings.GetProvider <SkiaSharpDrawingContext>().GetDefaultCartesianAxis() }; Series = new ObservableCollection <ISeries>(); canvas.SkCanvasView.EnableTouchEvents = true; canvas.SkCanvasView.Touch += OnSkCanvasTouched; if (core is null) { throw new Exception("Core not found!"); } core.Measuring += OnCoreMeasuring; core.UpdateStarted += OnCoreUpdateStarted; core.UpdateFinished += OnCoreUpdateFinished; }
/// <summary> /// Initializes a new instance of the <see cref="PolarChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public PolarChart() { InitializeComponent(); // workaround to detect mouse events. // Avalonia do not seem to detect pointer events if background is not set. ((IChartView)this).BackColor = LvcColor.FromArgb(0, 0, 0, 0); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); AttachedToVisualTree += OnAttachedToVisualTree; _seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _angleObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); _radiusObserver = new CollectionDeepObserver <IPolarAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); AngleAxes = new List <IPolarAxis>() { LiveCharts.CurrentSettings.PolarAxisProvider() }; RadiusAxes = new List <IPolarAxis>() { LiveCharts.CurrentSettings.PolarAxisProvider() }; Series = new ObservableCollection <ISeries>(); PointerWheelChanged += PolarChart_PointerWheelChanged; PointerPressed += PolarChart_PointerPressed; PointerMoved += PolarChart_PointerMoved; PointerLeave += PolarChart_PointerLeave; DetachedFromVisualTree += PolarChart_DetachedFromVisualTree; }
/// <summary> /// Initializes a new instance of the <see cref="PieChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public PieChart() { InitializeComponent(); // workaround to detect mouse events. // Avalonia do not seem to detect events if background is not set. Background = new SolidColorBrush(Colors.Transparent); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); _seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } _ = Dispatcher.UIThread.InvokeAsync(() => core.Update(), DispatcherPriority.Background); }, (object?sender, PropertyChangedEventArgs e) => { if (core == null) { return; } _ = Dispatcher.UIThread.InvokeAsync(() => core.Update(), DispatcherPriority.Background); }); Series = new ObservableCollection <ISeries>(); PointerLeave += CartesianChart_PointerLeave; PointerMoved += CartesianChart_PointerMoved; }
// Moved to css, probably remove? //private Font _tooltipFont = new(new FontFamily("Trebuchet MS"), 11, FontStyle.Regular); //private Color _tooltipBackColor = Color.FromArgb(255, 250, 250, 250); //private Font _legendFont = new(new FontFamily("Trebuchet MS"), 11, FontStyle.Regular); //private Color _legendBackColor = Color.FromArgb(255, 255, 255, 255); //private Color _legendTextColor = Color.FromArgb(255, 35, 35, 35); //private Color _tooltipTextColor; /// <summary> /// Called when the control is initialized. /// </summary> /// <exception cref="Exception"></exception> protected override void OnInitialized() { base.OnInitialized(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); }
public TestCartesianChartView() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); Core = new CartesianChart <SkiaSharpDrawingContext>( this, LiveChartsSkiaSharp.DefaultPlatformBuilder, CoreCanvas); }
public PieChart() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetStylesBuilder <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ConstructChart(this); InitializeCore(); mouseMoveThrottler = new ActionThrottler(MouseMoveThrottlerUnlocked, TimeSpan.FromMilliseconds(10)); seriesObserver = new CollectionDeepObserver <ISeries>( (object?sender, NotifyCollectionChangedEventArgs e) => { if (core == null) { return; } Dispatcher.UIThread.InvokeAsync(core.Update, DispatcherPriority.Background); }, (object?sender, PropertyChangedEventArgs e) => { if (core == null) { return; } Dispatcher.UIThread.InvokeAsync(core.Update, DispatcherPriority.Background); }); Series = new ObservableCollection <ISeries>(); }
/// <summary> /// Initializes a new instance of the <see cref="Chart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> protected Chart() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); SizeChanged += OnSizeChanged; MouseMove += OnMouseMove; MouseLeave += OnMouseLeave; }
public MainWindow() { InitializeComponent(); #if DEBUG this.AttachDevTools(); #endif DataContext = new MainWindowViewModel(); LoadContent("Home"); LiveCharts.Configure(settings => settings. AddDefaultMappers() .AddSkiaSharp() .AddLightTheme() // .., your custom settings here // .HasMap<Foo>( ... ) ); }
/// <summary> /// Initializes a new instance of the <see cref="SKPolarChart"/> class. /// </summary> public SKPolarChart() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); Core = new PolarChart <SkiaSharpDrawingContext>(this, LiveChartsSkiaSharp.DefaultPlatformBuilder, CoreCanvas); Core.Measuring += OnCoreMeasuring; Core.UpdateStarted += OnCoreUpdateStarted; Core.UpdateFinished += OnCoreUpdateFinished; }
public Chart() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetStylesBuilder <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ConstructChart(this); SizeChanged += OnSizeChanged; MouseMove += OnMouseMove; mouseMoveThrottler = new ActionThrottler(TimeSpan.FromMilliseconds(10)); mouseMoveThrottler.Unlocked += MouseMoveThrottlerUnlocked; }
public ViewModel() { // in this case we have an array of the Dog class // we need to compare the Age property of every dog in our array // you normally should configure every intance you require to use only when your application starts. // by default LiveCharts already knows how to map the types: // short, int, long, float, double, decimal, short?, int?, long?, float?, double?, decimal?, // WeightedPoint, WeightedPointF, ObservablePoint, ObservablePointF, OversableValue and ObservableValueF // for more info see: // https://github.com/beto-rodriguez/LiveCharts2/blob/master/src/LiveChartsCore/LiveChartsSettings.cs#L122 LiveCharts.Configure(config => // The HasMap<T>() method helps us to define a map from a type T to a point in our chart config .HasMap <Dog>((dog, point) => { // in this lambda function we take an intance of the Dog class (see dog parameter) // and the point in the chart for that instance (see point parameter) // LiveCharts will call this method for every instance of our Dog class, // now we need to populate the point coordinates from our Dog intance to our point // in this case we will use the Age property as our primary value (normally the Y coordinate) point.PrimaryValue = (float)dog.Age; // then the secondary value (normally the X coordinate) // will be the index of the given dog class in our array point.SecondaryValue = point.Context.Index; }) // lets also set a mapper for the DogAverageAge class .HasMap <DogAverageAge>((dogAverageAge, point) => { // in this case we are ignoring the point paramenter // every coordinate will be provided by our dogAverageAge instance point.PrimaryValue = (float)dogAverageAge.Y; point.SecondaryValue = (float)dogAverageAge.X; }) ); }
/// <summary> /// Initializes a new instance of the <see cref="CartesianChart"/> class. /// </summary> public PieChart() { if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors is null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeComponent(); _seriesObserver = new CollectionDeepObserver <ISeries>( (object sender, NotifyCollectionChangedEventArgs e) => { if (_core == null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } _core.Update(); }, (object sender, PropertyChangedEventArgs e) => { if (_core == null || (sender is IStopNPC stop && !stop.IsNotifyingChanges)) { return; } _core.Update(); }); Loaded += OnLoaded; Unloaded += OnUnloaded; }
/// <summary> /// Initializes a new instance of the <see cref="CartesianChart"/> class. /// </summary> /// <exception cref="Exception">Default colors are not valid</exception> public CartesianChart() { InitializeComponent(); if (!LiveCharts.IsConfigured) { LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder); } var stylesBuilder = LiveCharts.CurrentSettings.GetTheme <SkiaSharpDrawingContext>(); var initializer = stylesBuilder.GetVisualsInitializer(); if (stylesBuilder.CurrentColors == null || stylesBuilder.CurrentColors.Length == 0) { throw new Exception("Default colors are not valid"); } initializer.ApplyStyleToChart(this); InitializeCore(); SizeChanged += OnSizeChanged; seriesObserver = new CollectionDeepObserver <ISeries>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); xObserver = new CollectionDeepObserver <IAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); yObserver = new CollectionDeepObserver <IAxis>(OnDeepCollectionChanged, OnDeepCollectionPropertyChanged, true); XAxes = new List <IAxis>() { new Axis() }; YAxes = new List <IAxis>() { new Axis() }; Series = new ObservableCollection <ISeries>(); canvas.SkCanvasView.EnableTouchEvents = true; canvas.SkCanvasView.Touch += OnSkCanvasTouched; }