Table of Contents
DrawnUI Logo

DrawnUI for .NET

Hardware-accelerated rendering engine for .NET, including MAUI, Blazor, and OpenTK, powered by SkiaSharp

🤖 Teach your AI agent to use DrawnUI — see the AI skills guide.

Choose Your Target

MAUI

Use DrawnUi.Maui when you are building a native cross-platform app for iOS, Android, MacCatalyst, or Windows.

Install:

dotnet add package DrawnUi.Maui

MAUI setup guide →

OpenTK

Use DrawnUi.OpenTk for native OpenGL desktop Window or Linux app, fully drawn or overlay for already existing projects.

Reference:

dotnet add package DrawnUi.OpenTk

OpenTK guide →

Blazor

Use DrawnUi.Blazor.Wasm for browser-local rendering, or DrawnUi.Blazor.Server for server-side rendering.

Install:

dotnet add package DrawnUi.Blazor.Wasm
dotnet add package DrawnUi.Blazor.Server

Blazor runtime guide →

WebAssembly

Use DrawnUi.Wasm for a fully drawn web app — no Blazor, no Razor, just .NET WASM + SkiaSharp for WebAssembly.

Install:

dotnet add package DrawnUi.Wasm

DrawnUi.Wasm guide →

.NET

Use DrawnUi.Net when you need platform-agnostic rendering with SkiaSharp, server-side graphics, AI harness, tests and any other shared-logic development.

Install:

dotnet add package DrawnUi.Net

DrawnUi.Net guide →

📖 Choose Your Package And Runtime

🌟 What Is DrawnUI?

DrawnUI is a rendering engine for .NET built on top of SkiaSharp that brings together a complete layout system, gesture recognition, smooth animations, and custom-drawn controls across multiple hosts, including .NET MAUI, Blazor, and platform-agnostic .NET runtimes.

Unlike traditional UI stacks that rely only on native platform widgets, DrawnUI renders everything directly to SkiaSharp-powered surfaces. This approach gives you pixel-perfect control over your app's appearance while keeping a shared rendering model that can be hosted in native apps, browser runtimes, and headless .NET workflows.

Key Architecture:

  • SkiaSharp Foundation: Leverages Google's Skia graphics engine for consistent, high-performance 2D rendering
  • Canvas-Based Layout: Custom layout system that positions and sizes controls on hardware-accelerated surfaces
  • Gesture Engine: Multi-touch gesture recognition system with support for complex interactions
  • Animation Pipeline: Smooth, performant animations using GPU acceleration and intelligent caching
  • Virtual Controls: Lightweight control system without native platform overhead

Perfect for apps requiring custom UI designs, complex animations, game-like interfaces, headless rendering workflows, or pixel-perfect cross-platform consistency that traditional controls alone can't achieve.

😯 See Blazor WebAssembly sample

🏃 Master Performance

  • Fast App Startup for totally drawn apps
  • Caching system for retained rendering
  • Hardware acceleration on all platforms
  • Virtual controls - no native overhead

🎨 Unleash Creativity

  • Pixel-perfect cross-platform consistency
  • Gesture system with multi-touch support
  • 2D/3D transforms and visual effects
  • Custom shaders and filters

😃 Don't miss the Fiddle!

👨‍💻 Familiar Yet Powerful

  • MAUI/WFP-like properties for layout etc
  • Shell-like navigation on canvas (MAUI only, others soon)
  • XAML + Hot Reload support
  • Fluent C# syntax for code-behind UI with bindings
  • Accessible canvas (Blazor only, others soon)

📔 Learn More

📖 Documentation

Complete guides and API reference

Choose Your Target →
DrawnUi.Net →
OpenTK →
Getting Started →
Blazor →
DrawnUi.Wasm →
Controls Reference →
Advanced Topics →
API Reference →

🧙 Tutorials

Step-by-step practical examples

View Tutorials →
Sample Apps →
Fluent Syntax →

🤖 AI Agents

Teach your coding agent DrawnUI

AI Skills →
llms.txt →
Fiddle →

💬 Community

Get help and share your creations

GitHub Discussions →
Report Issues →
FAQ →

License NuGet Version NuGet Downloads

By Nick Kovalsky (@taublast) and contributors