C# Bitmap-Bibliothek zum Ersetzen von System.Drawing.Common
in .NET
IronDrawing ist kostenlos, quelloffen und unterstützt die meisten .NET-Zeichenbibliotheksformate
IronDrawing ist eine Open-Source-Bibliothek, die ursprünglich von Iron Software entwickelt wurde und C#-Softwareentwicklern hilft, System.Drawing.Common
in .NET-Projekten auf Windows-, macOS- und Linux-Plattformen zu ersetzen.
Die Entwicklung von Klassenbibliotheken und NuGet-Paketen für .NET 5, 6, 7 und 8, die Grafiken, Bilder und Schriftarten unterstützen, sollte einfach sein.
IronDrawing fungiert als nahtlose Brücke zwischen allen neu vorgeschlagenen Grafikstandards von .NET 5, 6, 7 und 8, die sich weiterentwickeln - so dass Sie nur für den vorhergesehenen Standard entwickeln müssen.
Technische Schritte zur Vermeidung von system.drawing.common wird auf dieser Plattform nicht unterstützt Ausnahme
- Umsetzung System.drawing.common ist nicht möglich für .NET6 und .NET 7 & 8 auf Linux und MacOs Plattform
- Die Verwendung von System.Drawing.Common auf diesen Plattformen führt zu einer Ausnahmemeldung
- Satz System.Drawing.EnableUnixSupport laufzeitkonfiguration zu wahr für .NET6
- Die Unterstützung für System.Drawing.Common ist in .NET 7 und 8 nicht mehr verfügbar
- Open-Source-Bibliothek verwenden IronSoftware.Drawing zu ersetzen System.Drawing.Common für .NET7
Kontext
Microsoft .NET ist ein plattformübergreifendes, hochkompatibles Software-Framework, das von Millionen von Software-Entwicklern auf der ganzen Welt genutzt wird. Microsoft hatangekündigt eine einschneidende Änderung, bei der System.Drawing.Common
nur noch auf Windows-Plattformen unterstützt wird.
Dies ist problematisch für Entwickler von .NET-Bibliotheken, die plattformübergreifende Bibliotheken verwalten, die System.Drawing.Common
verwenden, da Microsoftsempfohlene Maßnahme müssen Sie Ihre Bibliothek neu aufbauen, um Nicht-Windows-Benutzer zu unterstützen. Von Freiwilligen und Akademikern wird erwartet, dass sie jedes NuGet-Paket und jede Klassenbibliothek so umbauen, dass sie jede der neuen vorgeschlagenen Grafikbibliotheken verwenden, sobald sie auftauchen, was zu einer technischen Schuld führt, die die Annahme von modernem .NET verlangsamt.
Wenn wir .NET verwenden, verwenden wir letztlich NuGet.
die Entwickler der NuGet-Pakete tun uns allen einen Gefallen, indem sie .NET und vorgefertigten Code vorantreiben, für den wir selbst jeden Tag Tausende von Stunden benötigen würden
Diese einschneidende Änderung wird die NuGet-Entwicklung verlangsamen und könnte dazu führen, dass Code-Bibliotheken, auf die .NET-Entwickler angewiesen sind, aufgegeben oder veraltet werden. Wir müssen jetzt handeln!
Unsere Lösung
Ein zwischengeschaltetes Grafikformat, das zwischen allen alten und neuen Grafikbibliotheken konvertiert.
Als Entwickler von Klassenbibliotheken können Ihre öffentlichen Ein- und Ausgänge für "Bitmap", "Farbe", "Rechteck", "Schrift" und "Größe" nur von einem Typ sein, der alle neuen Standards unterstützt. Intern können Sie weiterhin machen, was Sie wollen.
IronDrawing ist abwärtskompatibel mit .NET-Framework 4.62, unterstützt alle Versionen von .NET(einschließlich .NET 8).
Die Entwicklung und Veröffentlichung von IronDrawing löst dieses Problem, indem es eine Open-Source-Lösung für das Fehlen eines einheitlichen Formats für wichtige Klassen wie Bitmap
, Color
, Rectangle
, Font
und Size
bietet. ironSoftware.Drawing" konvertiert nahtlos zwischen den Implementierungen dieser Typen in "System.Drawing", "Microsoft.Maui", "SkiaSharp" und "SixLabors" für Sie. Dadurch müssen Sie als Entwickler nicht alle Instanzen dieser Klassen in Ihrer Bibliothek ersetzen.
Fürbeispielwenn Sie System.Drawing.Bitmap
verwenden, können Sie IronDrawings AnyBitmap
Klasse benutzen, die implizite Konvertierungen zu jedem dieser Typen hat: System.Drawing.Bitmap
, System.Drawing.Image
, SkiaSharp.SKBitmap
, SkiaSharp.SKImage
, SixLabors.ImageSharp
, Microsoft.Maui.Graphics.Platform.PlatformImage
.
Warum machen wir das umsonst?
Wir haben IronDrawing entwickelt, weil wir bei Iron Software langjährige erfahrene .NET-Entwickler sind, die sich um die Entwicklung von .NET kümmern und wollen, dass es wächst und erfolgreich ist. Wir freuen uns, dass .NET wächst und sich weiterentwickelt, wie man an .NET 7\ sehen kann. Wir verwenden NuGet den ganzen Tag, und ich bin sicher, Sie tun das auch. Wir unterstützen und hoffen, einen einfachen Übergang in die Zukunft und weg von System.Drawing
zu fördern.
Wir möchten, dass die Entwicklung von .NET-Klassenbibliotheken und NuGet einfacher wird, damit das NuGet-Ökosystem weiter gedeiht und alle .NET-Entwickler davon profitieren.
ironSoftware.Drawing"-Funktionen
AnyBitmap
: Eine universell kompatible Bitmap-Klasse. Implizites Casting zwischenIronSoftware.Drawing.AnyBitmap
und dem folgenden unterstützt:system.Drawing.Bitmap
system.Drawing.Image
skiaSharp.SKBitmap
skiaSharp.SKImage
- sixLabors.ImageSharp
- microsoft.Maui.Graphics.Platform.PlatformImage
Color: Eine universell kompatible Farbklasse. Implizites Casting zwischen
IronSoftware.Drawing.Color
und dem folgenden unterstützt:system.Drawing.Color
skiaSharp.SKColor
- sixLabors.ImageSharp.Color
- sixLabors.ImageSharp.PixelFormats
Rectangle
: Eine universell kompatible Rectangle-Klasse. Implizites Casting zwischenIronSoftware.Drawing.Rectangle
und dem folgenden unterstützt:system.Drawing.Rectangle
skiaSharp.SKRect
- skiaSharp.SKRectI
- sixLabors.ImageSharp.Rectangle
Font: Eine universell kompatible Font-Klasse. Implizites Casting zwischen
IronSoftware.Drawing.Font
und dem folgenden unterstützt:system.Drawing.Font
skiaSharp.SKFont
- sixLabors.Fonts.Font
Kompatibilität
IronSoftware.Drawing
ist plattformübergreifend kompatibel mit:
- .NET 8, .NET 7, .NET 6, .NET 5, .NET Core, .NET Standard und .NET Framework 4.62+
- Windows, macOS, Linux, Docker, Azure und AWS
Einrichtung
installation von IronDrawing(ironSoftware.Drawing) NuGet-Paket ist schnell und einfach. Bitte installieren Sie das Paket wie folgt:
Install-Package IronSoftware.System.Drawing
Alternativ können Sie die Datei auch direkt von deroffizielle NuGet-Website.
Nach der Installation können Sie beginnen, indem Sie using IronSoftware.Drawing;
an den Anfang Ihres C#-Codes stellen.
I cannot translate an empty input. Please provide some text for translation.
Code-Beispiele
AnyBitmap Beispiel
:path=/static-assets/drawing/content-code-examples/get-started/anybitmap.cs
using IronSoftware.Drawing;
// Create a new AnyBitmap object
var bitmap = AnyBitmap.FromFile("FILE_PATH");
bitmap.SaveAs("result.jpg");
var bytes = bitmap.ExportBytes();
var resultExport = new System.IO.MemoryStream();
bitmap.ExportStream(resultExport, AnyBitmap.ImageFormat.Jpeg, 100);
// Casting between System.Drawing.Bitmap and IronSoftware.Drawing.AnyBitmap
System.Drawing.Bitmap image = new System.Drawing.Bitmap("FILE_PATH");
IronSoftware.Drawing.AnyBitmap anyBitmap = image;
anyBitmap.SaveAs("result-from-casting.png");
Imports IronSoftware.Drawing
' Create a new AnyBitmap object
Private bitmap = AnyBitmap.FromFile("FILE_PATH")
bitmap.SaveAs("result.jpg")
Dim bytes = bitmap.ExportBytes()
Dim resultExport = New System.IO.MemoryStream()
bitmap.ExportStream(resultExport, AnyBitmap.ImageFormat.Jpeg, 100)
' Casting between System.Drawing.Bitmap and IronSoftware.Drawing.AnyBitmap
Dim image As New System.Drawing.Bitmap("FILE_PATH")
Dim anyBitmap As IronSoftware.Drawing.AnyBitmap = image
anyBitmap.SaveAs("result-from-casting.png")
Farbe Beispiel
:path=/static-assets/drawing/content-code-examples/get-started/color.cs
using IronSoftware.Drawing;
// Create a new Color object
Color fromHex = new Color("#191919");
Color fromRgb = new Color(255, 255, 0);
Color fromEnum = Color.Crimson;
// Casting between System.Drawing.Color and IronSoftware.Drawing.Color
System.Drawing.Color drawingColor = System.Drawing.Color.Red;
IronSoftware.Drawing.Color ironColor = drawingColor;
ironColor.A;
ironColor.R;
ironColor.G;
ironColor.B;
// Luminance is a value from 0 (black) to 100 (white) where 50 is the perceptual "middle grey"
IronDrawingColor.GetLuminance();
Imports IronSoftware.Drawing
' Create a new Color object
Private fromHex As New Color("#191919")
Private fromRgb As New Color(255, 255, 0)
Private fromEnum As Color = Color.Crimson
' Casting between System.Drawing.Color and IronSoftware.Drawing.Color
Private drawingColor As System.Drawing.Color = System.Drawing.Color.Red
Private ironColor As IronSoftware.Drawing.Color = drawingColor
ironColor.A
ironColor.R
ironColor.G
ironColor.B
' Luminance is a value from 0 (black) to 100 (white) where 50 is the perceptual "middle grey"
IronDrawingColor.GetLuminance()
Beispiel für ein Rechteck
:path=/static-assets/drawing/content-code-examples/get-started/rectangle.cs
using IronSoftware.Drawing;
// Create a new Rectangle object
Rectangle Rectangle = new Rectangle(5, 5, 50, 50);
// Casting between System.Drawing.Rectangle and IronSoftware.Drawing.Rectangle
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(10, 10, 150, 150);
IronSoftware.Drawing.Rectangle ironRectangle = rectangle;
ironRectangle.X;
ironRectangle.Y;
ironRectangle.Width;
ironRectangle.Height;
Imports IronSoftware.Drawing
' Create a new Rectangle object
Private Rectangle As New Rectangle(5, 5, 50, 50)
' Casting between System.Drawing.Rectangle and IronSoftware.Drawing.Rectangle
'INSTANT VB NOTE: The field rectangle was renamed since Visual Basic does not allow fields to have the same name as other class members:
Private rectangle_Conflict As New System.Drawing.Rectangle(10, 10, 150, 150)
Private ironRectangle As IronSoftware.Drawing.Rectangle = rectangle_Conflict
ironRectangle.X
ironRectangle.Y
ironRectangle.Width
ironRectangle.Height
Schriftart Beispiel
:path=/static-assets/drawing/content-code-examples/get-started/font.cs
using IronSoftware.Drawing;
// Create a new Font object
Font font = new Font("Times New Roman", FontStyle.Italic | FontStyle.Bold, 30);
// Casting between System.Drawing.Font and IronSoftware.Drawing.Font
System.Drawing.Font drawingFont = new System.Drawing.Font("Courier New", 30);
IronSoftware.Drawing.Font ironFont = drawingFont;
ironFont.FamilyName;
ironFont.Style;
ironFont.Size;
ironFont.Italic;
ironFont.Bold;
Imports IronSoftware.Drawing
' Create a new Font object
Private font As New Font("Times New Roman", FontStyle.Italic Or FontStyle.Bold, 30)
' Casting between System.Drawing.Font and IronSoftware.Drawing.Font
Private drawingFont As New System.Drawing.Font("Courier New", 30)
Private ironFont As IronSoftware.Drawing.Font = drawingFont
ironFont.FamilyName
ironFont.Style
ironFont.Size
ironFont.Italic
ironFont.Bold
Unterstützung verfügbar
Lizenz
Die Informationen zur Lizenzierung finden Sie hier:LICENSE.txt
Beitragen
Wenn Sie zum Open-Source-Projekt IronDrawing beitragen möchten, lesen Sie bitte dielizenz bevor Sie eine Pull-Anfrage an dierepository auf GitHub.
Informationen
Für weitere Informationen über Iron Software besuchen Sie bitte unsere Website: https://ironsoftware.com/
Unterstützung durch Iron Software
Für allgemeinen Support und technische Anfragen senden Sie uns bitte eine E-Mail an: mailto:support@ironsoftware.com