FastCharts.Wpf 1.0.0

dotnet add package FastCharts.Wpf --version 1.0.0
                    
NuGet\Install-Package FastCharts.Wpf -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FastCharts.Wpf" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FastCharts.Wpf" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="FastCharts.Wpf" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FastCharts.Wpf --version 1.0.0
                    
#r "nuget: FastCharts.Wpf, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FastCharts.Wpf@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FastCharts.Wpf&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=FastCharts.Wpf&version=1.0.0
                    
Install as a Cake Tool

FastCharts - High-Performance .NET Charting Library

<div align="center"> <img src="mabinogi-icon.png" alt="FastCharts" width="128" height="128">

NuGet Downloads Build Status License: MIT </div>

🌟 What is FastCharts?

FastCharts is a high-performance .NET charting library designed for real-time applications, financial dashboards, and data visualization scenarios requiring smooth rendering of massive datasets (10M+ points).

⚑ Key Features

  • πŸš€ Real-time Performance: 60 FPS rendering with LTTB decimation
  • πŸ“Š Rich Chart Types: Line, Scatter, Bar, Area, Band, OHLC, ErrorBar
  • 🎯 Multi-Axis Support: Independent left/right Y axes
  • πŸ“ˆ Advanced Axes: Linear, Logarithmic, Category with custom bases
  • πŸ”„ Streaming Data: Rolling windows with efficient append operations
  • 🎨 Interactive: Pan, zoom, crosshair, pinned tooltips
  • πŸ“ Annotations: Lines, ranges, labels with full styling
  • πŸ’Ύ Export Ready: PNG export with clipboard integration
  • 🌐 Cross-Platform: Windows, macOS, Linux support
  • πŸ—οΈ MVVM Ready: Full WPF integration with ReactiveUI

🎯 Perfect For

  • Financial Applications: Trading platforms, market analysis
  • Real-Time Dashboards: IoT monitoring, system metrics
  • Scientific Visualization: Research data, sensor readings
  • Business Intelligence: KPI dashboards, analytics
  • Desktop Applications: WPF apps with rich data visualization

πŸ“¦ Quick Start

dotnet add package FastCharts.Wpf

Basic Usage

XAML:

<Window xmlns:fc="clr-namespace:FastCharts.Wpf.Controls;assembly=FastCharts.Wpf">
    <fc:FastChart Model="{Binding ChartModel}" />
</Window>

C# Code:

using FastCharts.Core;
using FastCharts.Core.Series;

// Create chart model
var model = new ChartModel();

// Add data series
model.AddSeries(new LineSeries(new[] {
    new PointD(0, 10),
    new PointD(1, 20),
    new PointD(2, 15),
    new PointD(3, 25)
}) { 
    Title = "Sales Data",
    Color = ColorRgba.Blue,
    StrokeWidth = 2
});

// Bind to your ViewModel
this.DataContext = new { ChartModel = model };

Real-Time Streaming Example

// Create streaming series with rolling window
var streamingSeries = new StreamingLineSeries {
    Title = "Live Data",
    MaxPointCount = 1000, // Keep last 1000 points
    RollingWindowDuration = TimeSpan.FromMinutes(5)
};

// Add real-time data
streamingSeries.AppendPoint(new PointD(DateTime.Now.Ticks, sensorValue));

model.AddSeries(streamingSeries);

Multi-Axis Example

// Create chart with multiple Y axes
var model = new ChartModel();

// Add left axis series (temperature)
model.AddSeries(new LineSeries(temperatureData) {
    Title = "Temperature (Β°C)",
    YAxisIndex = 0, // Left Y axis
    Color = ColorRgba.Red
});

// Add right axis series (pressure) 
model.AddSeries(new LineSeries(pressureData) {
    Title = "Pressure (hPa)", 
    YAxisIndex = 1, // Right Y axis
    Color = ColorRgba.Blue
});

πŸ—οΈ Architecture

FastCharts uses a clean, modular architecture:

β”œβ”€β”€ FastCharts.Core          # Core algorithms & abstractions
β”œβ”€β”€ FastCharts.Rendering.Skia # Cross-platform rendering engine
└── FastCharts.Wpf           # WPF controls & MVVM integration

Package Selection Guide

Scenario Packages Needed
WPF Desktop App FastCharts.Wpf (includes others)
Cross-Platform Console FastCharts.Core + FastCharts.Rendering.Skia
Web API Chart Generation FastCharts.Core + FastCharts.Rendering.Skia
Business Logic Only FastCharts.Core

πŸ“Š Advanced Features

LTTB Decimation for Massive Datasets

var largeSeries = new LineSeries(millionsOfPoints) {
    EnableAutoResampling = true // Automatically reduces to screen resolution
};
// Maintains visual fidelity while ensuring 60 FPS performance

Performance Metrics Overlay

model.AddBehavior(new MetricsOverlayBehavior {
    ShowDetailed = true,
    Position = MetricsPosition.TopLeft
});
// Press F3 to toggle, F4 for detail level, F5 to reset

Interactive Behaviors

model.AddBehavior(new PanBehavior());
model.AddBehavior(new ZoomBehavior());
model.AddBehavior(new CrosshairBehavior());
model.AddBehavior(new PinnedTooltipBehavior()); // Right-click to pin tooltips

Annotations

// Add horizontal line annotation
model.AddAnnotation(new LineAnnotation {
    Type = LineAnnotationType.Horizontal,
    Value = 100,
    Label = "Target Value",
    Color = ColorRgba.Green
});

// Add range highlight
model.AddAnnotation(new RangeAnnotation {
    Type = RangeAnnotationType.Horizontal, 
    StartValue = 90,
    EndValue = 110,
    FillColor = ColorRgba.Green.WithAlpha(0.2f),
    Label = "Acceptable Range"
});

πŸš€ Performance

  • Rendering Speed: Up to 60 FPS for interactive charts
  • Memory Efficiency: Optimized for large datasets (10M+ points)
  • LTTB Algorithm: Reduces data while preserving visual fidelity
  • Hardware Acceleration: GPU-accelerated rendering via SkiaSharp
  • Streaming Optimized: Real-time updates with minimal overhead

🌐 Framework Support

Framework FastCharts.Core Rendering.Skia WPF
.NET Standard 2.0 βœ… βœ… ❌
.NET Framework 4.8 βœ… βœ… βœ…
.NET 6 βœ… βœ… βœ…
.NET 8 βœ… βœ… βœ…

Platforms: Windows, macOS, Linux (Core + Skia), Windows only (WPF)

πŸ“– Documentation

🀝 Contributing

We welcome contributions! See our Contributing Guide for details.

Development Setup

git clone https://github.com/MabinogiCode/FastCharts.git
cd FastCharts
dotnet restore
dotnet build
dotnet test # 594 tests should pass

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments


<div align="center"> <strong>Made with ❀️ for the .NET community</strong><br> <sub>FastCharts - Where performance meets visualization</sub> </div>

Product Compatible and additional computed target framework versions.
.NET net6.0-windows10.0.19041 is compatible.  net7.0-windows was computed.  net8.0-windows was computed.  net8.0-windows10.0.19041 is compatible.  net9.0-windows was computed.  net10.0-windows was computed. 
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 212 12/15/2025

FastCharts.Wpf v1.0.0 - Production-ready WPF controls with full MVVM support!