C# Bitmapライブラリは、.NETでSystem.Drawing.Commonを置き換えます

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronDrawingはフリー、オープンソースで、ほとんどの.NET描画ライブラリ形式をサポートしています。

IronDrawingは、Iron Softwareによって元々開発されたオープンソースのライブラリであり、C#ソフトウェアエンジニアがWindows、macOS、Linuxプラットフォームの.NETプロジェクトでSystem.Drawing.Commonを置き換えるのを支援します。

グラフィック、画像、フォントをサポートする.NET 5、6、7、8用のクラスライブラリやNuGetパッケージの開発は簡単なはずだ。

IronDrawingは、進化し続ける新しい.NET 5、6、7&8のグラフィックス標準のすべての間でシームレスな橋渡しとして機能します。したがって、お好みのものだけを開発すればよいのです。

IronDrawing は無料でオープンソースであり、ほとんどの .NET ドローイングライブラリ形式をサポートしています

コンテクスト

Microsoft .NETフレームワークは、世界中の何百万人ものソフトウェア開発者に使用されている、マルチプラットフォームで互換性の高いソフトウェアフレームワークです。 Microsoftは、発表しましたSystem.Drawing.CommonがWindowsプラットフォームでのみサポートされる重大な変更です。

.NETライブラリの開発者にとって、System.Drawing.Commonを使用するクロスプラットフォームのライブラリを維持することが問題になります。なぜなら、Microsoftの推奨されるアクションでは、非Windowsユーザーをサポートするためにライブラリを再構築することが必要だからです。 ボランティアや学者は、新しい提案されたグラフィックライブラリが登場するたびにそれぞれのNuGetパッケージとクラスライブラリを再構築することが期待されています。これにより、モダンな.NETの採用を遅らせる技術的負債が生じます。

結局、.NETを使うときはNuGetを使う。

_NuGetパッケージの開発者は、.NETと、毎日自分たちで書くには何千時間もかかるようなパッケージ化されたコードを進めることで、私たちに好意を持ってくれている。

この重大な変更はNuGetの開発を遅らせ、.NET開発者が依存しているライブラリが放棄されたり、陳腐化したりする可能性があります。 今すぐ行動しなければなりません!

ソリューション

すべての新旧グラフィック・ライブラリ間を変換する中間グラフィック・フォーマット。

クラスライブラリ開発者として、公衆のBitmapColorRectangleFont、およびSizeの入力と出力は、新しいすべての標準をサポートする1つのタイプのみでなければなりません。 社内では、好きなことを続けることができる。

IronDrawingは.NET Framework 4.62との後方互換性があり、.NET 8を含むすべてのバージョンの.NETをサポートしています。

IronDrawingの開発とリリースは、BitmapColorRectangleFontSizeといった重要なクラスに対する統一フォーマットの欠如という問題をオープンソースのソリューションによって解決しました。 IronSoftware.Drawing は、System.DrawingMicrosoft.MauiSkiaSharp、および SixLabors におけるこれらの型の実装をシームレスに変換します。 これによって開発者は、ライブラリ内でこれらのクラスのインスタンスをすべて置き換える必要がなくなる。

として、System.Drawing.Bitmapを使用している場合、IronDrawingのAnyBitmapクラスを使用できます。このクラスは、System.Drawing.BitmapSystem.Drawing.ImageSkiaSharp.SKBitmapSkiaSharp.SKImageSixLabors.ImageSharpMicrosoft.Maui.Graphics.Platform.PlatformImageのいずれの型にも暗黙の変換を持っています。

なぜ無償なのか

Iron SoftwareがIronDrawingを開発したのは、私たちが.NETの進化に関心を持ち、.NETの成長と成功を願う長期的な上級.NET開発者だからです。 .NET 7に見られるように、.NETが成長し、進化しているのを見るのは大好きだ。 私たちは一日中NuGetを使っていますし、皆さんもそうでしょう。 私たちは、System.Drawingから離れ、将来へのスムーズな移行を支援し、促進することを望んでいます。

私たちは、NuGetエコシステムが繁栄し続け、すべての.NET開発者が恩恵を受けるように、すべての.NETクラスライブラリとNuGetの開発が容易になることを望んでいます。

IronSoftware.Drawing の機能

  • AnyBitmap: 汎用的な互換性を持つBitmapクラス。 IronSoftware.Drawing.AnyBitmapと以下のサポート対象間の暗黙的キャスティング:

    • System.Drawing.Bitmap

    • System.Drawing.Image

    • SkiaSharp.SKBitmap

    • SkiaSharp.SKImage

    • SixLabors.ImageSharp
  • Microsoft.Maui.Graphics.Platform.PlatformImage
  • カラー:普遍的に互換性のあるカラークラス。 IronSoftware.Drawing.Colorと以下のサポート間の暗黙の型変換:

    • System.Drawing.Color

    • SkiaSharp.SKColor

    • SixLabors.ImageSharp.Color
  • SixLabors.ImageSharp.PixelFormats
  • Rectangle: 普遍的に互換性のあるRectangleクラス。 IronSoftware.Drawing.Rectangle と次の間での暗黙的キャストがサポートされています:

    • System.Drawing.Rectangle

    • SkiaSharp.SKRect

    • SkiaSharp.SKRectI
  • SixLabors.ImageSharp.Rectangle
  • フォント: ユニバーサルに互換性のあるフォントクラス。 IronSoftware.Drawing.Fontと以下の間の暗黙的キャストがサポートされています:

    • System.Drawing.Font

    • SkiaSharp.SKFont

    • SixLabors.Fonts.Font

互換性

IronSoftware.Drawing は次のクロスプラットフォーム対応と互換性があります:

  • .NET 8、.NET 7、.NET 6、.NET 5、.NETコア、.NETスタンダード、.NETフレームワーク4.62以上
  • Windows、macOS、Linux、Docker、Azure、AWS

インストール

IronDrawing (IronSoftware.Drawing) NuGet パッケージのインストールは迅速で簡単です。 このようにパッケージをインストールしてください:

Install-Package IronSoftware.System.Drawing

または、公式NuGetウェブサイトから直接ダウンロードしてください。

インストール後、C#コードの先頭にusing IronSoftware.Drawing;を追加することで始めることができます。

もちろんですが、翻訳希望の内容が見当たりません。翻訳してほしい内容を提供してください。

コード例

AnyBitmapの例

: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")
$vbLabelText   $csharpLabel

カラーの例

: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()
$vbLabelText   $csharpLabel

長方形の例

: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
$vbLabelText   $csharpLabel

フォントの例

: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
$vbLabelText   $csharpLabel

サポートあり

ライセンス

ライセンス情報はここで見つけることができます:LICENSE.txt

貢献する

IronDrawingのオープンソースプロジェクトに貢献したい場合は、ライセンスをお読みいただき、GitHubのリポジトリにプルリクエストを行ってください。

インフォメーション

Iron Software の詳細については、当社のウェブサイトをご覧ください:https://ironsoftware.com/

Iron Softwareのサポート

一般的なサポートや技術的なお問い合わせは、電子メールでご連絡ください:mailto:support@ironsoftware.com