.NET の System.Drawing.Common を置き換える C# ビットマップライブラリ

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

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

IronDrawingはアイアンソフトウェアが独自に開発したオープンソースライブラリで、C#ソフトウェアエンジニアがWindows、macOS、Linuxプラットフォームの.NETプロジェクトでSystem.Drawing.Commonを置き換えるのに役立ちます。

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

IronDrawingは、.NET 5、6、7、8で提案されているすべての新しいグラフィックスタンダードの間のシームレスなブリッジとして機能します。

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

コンテクスト

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

これは、System.Drawing.Commonを使用するクロスプラットフォーム・ライブラリを管理している.NETライブラリ開発者にとって問題となる。 推奨措置 の場合、Windows以外のユーザーをサポートするためにライブラリを再構築する必要があります。 ボランティアや学者たちは、新しいグラフィック・ライブラリが提案されると、そのそれぞれを使用するために、すべてのNuGetパッケージとクラス・ライブラリを再構築することが期待されており、最新の.NETの採用を遅らせる技術的負債を引き起こしている。

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

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

この画期的な変更は、NuGetの開発を遅らせ、.NET開発者が依存するコードライブラリの放棄や廃止につながる可能性がある。 今すぐ行動を!

ソリューション

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

クラスライブラリの開発者として、あなたのパブリックな BitmapColorRectangleFontSize の入出力は、すべての新しい標準をサポートする1つのタイプだけにすることができます。 社内では、好きなことを続けることができる。

IronDrawingは.NETフレームワーク4.62と下位互換性があり、.NETのすべてのバージョンをサポートしています。 (.NET 8を含む).

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

のために System.Drawing.Bitmapを使用している場合は、IronDrawingのAnyBitmapクラスを使用することができます:System.Drawing.Bitmap, System.Drawing.Image, SkiaSharp.SKBitmap, SkiaSharp.SKImage, SixLabors.ImageSharp, Microsoft.Maui.Graphics.Platform.PlatformImage.

なぜ無償なのか

アイアンソフトウェアが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`。
  • Color:汎用的なカラークラス。 IronSoftware.Drawing.Color`と以下の間の暗黙のキャストがサポートされました:

    • System.Drawing.Color`。

    • スキアシャープ.SKColor`。

    • SixLabors.ImageSharp.Color`。
  • SixLabors.ImageSharp.PixelFormats`。
  • Rectangle:汎用的な Rectangle クラスです。 IronSoftware.Drawing.Rectangle`と以下の間の暗黙のキャストがサポートされました:

    • System.Drawing.Rectangle`。

    • スキアシャープ.SKRect`。

    • スキアシャープ.SKRectI`。
  • SixLabors.ImageSharp.Rectangle`。
  • フォント:汎用フォントクラス。 IronSoftware.Drawing.Font`と以下の間の暗黙のキャストがサポートされました:

    • System.Drawing.Font`。

    • スキアシャープ.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")
VB   C#

カラーの例

: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()
VB   C#

長方形の例

: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
VB   C#

フォントの例

: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
VB   C#

サポートあり

ライセンス

ライセンスに関する情報はこちらをご覧ください: LICENSE.txt

貢献する

IronDrawingのオープンソース・プロジェクトに貢献したい方は、以下をお読みください。 ライセンス へのプル・リクエストを行う前に GitHub のリポジトリ.

インフォメーション

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

アイアンソフトウェアのサポート

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