Majorsilence.Forms.Drawing.Common
26.0.33
dotnet add package Majorsilence.Forms.Drawing.Common --version 26.0.33
NuGet\Install-Package Majorsilence.Forms.Drawing.Common -Version 26.0.33
<PackageReference Include="Majorsilence.Forms.Drawing.Common" Version="26.0.33" />
<PackageVersion Include="Majorsilence.Forms.Drawing.Common" Version="26.0.33" />
<PackageReference Include="Majorsilence.Forms.Drawing.Common" />
paket add Majorsilence.Forms.Drawing.Common --version 26.0.33
#r "nuget: Majorsilence.Forms.Drawing.Common, 26.0.33"
#:package Majorsilence.Forms.Drawing.Common@26.0.33
#addin nuget:?package=Majorsilence.Forms.Drawing.Common&version=26.0.33
#tool nuget:?package=Majorsilence.Forms.Drawing.Common&version=26.0.33
Majorsilence.Forms.Drawing.Common
A cross-platform, SkiaSharp-backed replacement for the Windows-only System.Drawing.Common (GDI+),
usable on its own or as the drawing layer under
Majorsilence.Forms.
If your migration is blocked by System.Drawing.Common throwing
PlatformNotSupportedException off Windows, this is the drop-in shape you're looking for.
Install
dotnet add package Majorsilence.Forms.Drawing.Common
Types live under Majorsilence.Forms.Drawing (plus .Drawing2D, .Imaging, .Text), mirroring the
System.Drawing layout — so migration is largely a namespace change:
using Majorsilence.Forms.Drawing;
using var bitmap = new Bitmap (200, 100);
using var g = Graphics.FromImage (bitmap);
g.Clear (Color.White);
g.FillRectangle (new SolidBrush (Color.CornflowerBlue), 10, 10, 180, 80);
g.DrawString ("Hello", new Font ("Arial", 14), Brushes.Black, 20, 35);
bitmap.Save ("out.png", ImageFormat.Png);
What it implements
Brush · Brushes · SolidBrush · HatchBrush · LinearGradientBrush · PathGradientBrush ·
TextureBrush · Pen · Pens · Font · FontFamily · Image · Bitmap · Icon · Region ·
StringFormat · GraphicsPath · Matrix · imaging codecs and ImageAttributes/ColorMatrix, and
the Drawing2D/Imaging/Text enums that go with them.
What it deliberately does not reimplement
The value types are not replaced: Color, Point, PointF, Size, SizeF, Rectangle, and
RectangleF come from the real BCL System.Drawing.Primitives, which is already cross-platform and
ships with the base framework everywhere.
This matters when migrating: keep using those types exactly as-is, and only redirect the GDI+ types.
The majorsilence-migrate
CLI applies precisely this split automatically.
EMF/WMF metafile recording and playback is out of scope — a Windows-GDI concept with no cross-platform meaning on a Skia backend.
Notes
- Targets
net8.0andnet10.0. AOT-compatible and trim-analyzed. - SkiaSharp is an implementation detail: no
SK*type appears in the public API, so you are not coupled to it. - Originally developed as part of Majorsilence.Reporting.
Links
- Documentation · Cross-platform WinForms, explained
- Repository
- Compatibility matrix — the
System.Drawing/ GDI+ section - Migration guide
Licensed under the MIT License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- SkiaSharp (>= 3.119.4)
- SkiaSharp.NativeAssets.Linux (>= 3.119.4)
- System.Memory (>= 4.6.3)
-
net10.0
- SkiaSharp (>= 3.119.4)
- SkiaSharp.NativeAssets.Linux (>= 3.119.4)
-
net8.0
- SkiaSharp (>= 3.119.4)
- SkiaSharp.NativeAssets.Linux (>= 3.119.4)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Majorsilence.Forms.Drawing.Common:
| Package | Downloads |
|---|---|
|
Majorsilence.Forms
Cross-platform WinForms for .NET. A Windows Forms compatibility layer that runs your existing WinForms apps on Windows, macOS, Linux, mobile and the browser — the same Form, controls, event handlers and *.Designer.cs files, with no rewrite. Requires a backend package (Majorsilence.Forms.Avalonia for desktop). |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 26.0.33 | 19 | 8/25/2026 |
| 26.0.32 | 246 | 8/19/2026 |
| 26.0.31 | 190 | 8/17/2026 |
| 26.0.30 | 177 | 8/13/2026 |
| 26.0.29 | 175 | 8/8/2026 |
| 26.0.28 | 175 | 8/7/2026 |
| 26.0.27 | 168 | 8/6/2026 |
| 26.0.26 | 183 | 8/4/2026 |
| 26.0.25 | 204 | 8/1/2026 |
| 26.0.24 | 116 | 7/23/2026 |
| 26.0.23 | 106 | 7/14/2026 |
| 26.0.22 | 115 | 7/9/2026 |
| 26.0.18 | 116 | 7/7/2026 |
| 26.0.0 | 123 | 7/3/2026 |