Bit.Bink
10.7.0
See the version list below for details.
dotnet add package Bit.Bink --version 10.7.0
NuGet\Install-Package Bit.Bink -Version 10.7.0
<PackageReference Include="Bit.Bink" Version="10.7.0" />
<PackageVersion Include="Bit.Bink" Version="10.7.0" />
<PackageReference Include="Bit.Bink" />
paket add Bit.Bink --version 10.7.0
#r "nuget: Bit.Bink, 10.7.0"
#:package Bit.Bink@10.7.0
#addin nuget:?package=Bit.Bink&version=10.7.0
#tool nuget:?package=Bit.Bink&version=10.7.0
Bit.Bink
A native drawing and ink engine for Blazor: signature fields, handwriting, whiteboards, image markup and document review. The stroke model, smoothing, pressure response, hit testing, undo, serialization and export are written in C#. JavaScript only collects pointer and keyboard input and replays a command buffer onto a canvas - there is no JavaScript drawing library underneath.
Quick start
dotnet add package Bit.Bink
@* _Imports.razor *@
@using Bit.Bink
No services to register and no stylesheet to reference: the package's Blazor initializer injects
_content/Bit.Bink/bit-bink.css automatically.
<BinkCanvas @ref="_canvas" Height="180px" AriaLabel="Sign here"
DocumentChanged="() => StateHasChanged()" />
<button @onclick="() => _canvas!.Clear()">Clear</button>
<button @onclick="SaveAsync">Save</button>
@code {
private BinkCanvas? _canvas;
private async Task SaveAsync()
{
string svg = await _canvas!.ExportSvgAsync(new BinkSvgExportOptions { Region = BinkExportRegion.Content });
string json = BinkSerializer.Serialize(_canvas.CurrentDocument);
// store either one; BinkSerializer.Deserialize + LoadDocument brings the drawing back
}
}
Pick what pointer input does with Tool (BinkDrawTool, BinkEraserTool, BinkSelectTool, BinkShapeTool,
BinkTextTool, BinkPanTool) and how ink looks with Brush (BinkPenBrush, BinkPencilBrush,
BinkMarkerBrush, BinkHighlighterBrush).
Features
- Pressure-aware, variable-width ink with smoothing, simulated pressure, tilt and twist capture.
- Stroke, segment and pixel erasers.
- Selection, lasso, move, resize and rotate through transforms, snapping to a grid and to other elements; layers with visibility, lock and opacity.
- Copy, cut and paste through the system clipboard (images and text included), duplicate, Alt-drag copies and bring-to-front, each with its usual shortcut and one undo step.
- Shapes, arrows, highlights, callouts, text with a real HTML editor, and images.
- Undo and redo built on inverse operations, never snapshots, with long drags compacted to one step per element.
- A versioned, compact JSON format with binary stroke points, hardened against untrusted input.
- SVG, PNG, JPEG and WebP export that match the screen, including a pure .NET PNG path for servers and tests.
- Ink measurements (length, stroke count, duration) for validating signatures.
- Real-time collaboration over any transport, with presence and offline queueing.
- Palm rejection, pinch zoom, mouse wheel and trackpad pan and zoom, coalesced samples, high-DPI canvases and an opt-in low-latency canvas.
- Retained rendering: the browser keeps every path it has drawn, so redrawing a large page costs a few numbers per element, over WebAssembly and over a Blazor Server circuit alike.
- A labelled, keyboard-operable canvas with a live text summary for screen readers.
- Blazor WebAssembly, Server, Web App (including prerendering) and Hybrid on .NET 8, 9 and 10.
For AI agents
The demo site hosts an MCP server at https://bink.bitplatform.dev/mcp
that answers from the shipped library: its API, its guide and the demo's working
pages.
Documentation
The full guide - architecture, brushes and pressure, erasing, selection and layers, annotations, serialization, export, hosting models, mobile and stylus, accessibility, performance, collaboration and extending the library - is in the Bink README. See it running at bink.bitplatform.dev.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.AspNetCore.Components.Web (>= 10.0.0 && < 11.0.0)
-
net8.0
- Microsoft.AspNetCore.Components.Web (>= 8.0.0 && < 9.0.0)
-
net9.0
- Microsoft.AspNetCore.Components.Web (>= 9.0.0 && < 10.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Bit.Bink:
| Package | Downloads |
|---|---|
|
Bit.Bcrdt.Bink
bit Bcrdt as the collaboration backend for bit Bink: BcrdtBinkBinding keeps a BinkDocument and a collaborative map in step in both directions - every layer and element an entry of its own, keyed by id, one key per property, so concurrent edits of different elements or of different properties of one element all survive - with one transaction per gesture, no echo, selective collaborative undo and cursor and selection presence. |
|
|
Bit.Bmage.Bink
Connects Bit.Bmage images and Bit.Bink drawings: open a photo, screenshot or scan as the locked bottom layer of a Bink document to sign, mark up or annotate it, then render the drawing back into a Bmage image, flatten it onto the original, or keep it as a separate Bmage layer that stays editable. Everything runs in managed code, on the device or on a server. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 11.0.0-pre-18 | 40 | 11/11/2026 |
| 11.0.0-pre-17 | 57 | 11/4/2026 |
| 11.0.0-pre-16 | 66 | 11/2/2026 |
| 11.0.0-pre-15 | 69 | 10/27/2026 |
| 11.0.0-pre-14 | 62 | 10/26/2026 |
| 11.0.0-pre-13 | 65 | 10/26/2026 |
| 11.0.0-pre-12 | 59 | 10/26/2026 |
| 11.0.0-pre-11 | 72 | 10/25/2026 |
| 11.0.0-pre-10 | 76 | 10/18/2026 |
| 10.7.0 | 98 | 10/25/2026 |
| 10.7.0-pre-04 | 94 | 10/25/2026 |
| 10.7.0-pre-03 | 88 | 10/22/2026 |
| 10.7.0-pre-02 | 94 | 10/22/2026 |