ホームページ > バックエンド開発 > C++ > GetPixel と SetPixel を超えて C# でのビットマップ ピクセル操作を高速化するにはどうすればよいですか?

GetPixel と SetPixel を超えて C# でのビットマップ ピクセル操作を高速化するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-19 02:41:08
オリジナル
147 人が閲覧しました

How Can I Speed Up Bitmap Pixel Manipulation in C# Beyond GetPixel and SetPixel?

C# ビットマップ ピクセル操作の速度の向上: GetPixel と SetPixel を超えるソリューション

はじめに

C# アプリケーションでは、ビットマップの操作に一般的に GetPixel メソッドと SetPixel メソッドが使用されます。ただし、場合によっては、そのパフォーマンスがボトルネックになる可能性があります。この記事では、より高速な代替手段を検討し、潜在的なパフォーマンス向上を評価します。

ダイレクトビットマップクラスを使用する

カスタマイズされた DirectBitmap クラスは、中間のロック操作やロック解除操作を行わずに、ビットマップ データへの直接アクセスを提供します。このアプローチにより、より高速なピクセル操作が可能になります:

<code class="language-csharp">public class DirectBitmap : IDisposable
{
    public Int32[] Bits { get; private set; }
    public int Width { get; private set; }
    public int Height { get; private set; }

    public void SetPixel(int x, int y, Color color)
    {
        Bits[x + (y * Width)] = color.ToArgb();
    }

    public Color GetPixel(int x, int y)
    {
        int index = x + (y * Width);
        int col = Bits[index];
        return Color.FromArgb(col);
    }
}</code>
ログイン後にコピー

直接ビットマップを使用する利点

  • メモリ割り当てを削減します: 元のデータへの変更は、不必要なメモリ割り当てなしでビットマップに直接適用されます。
  • 追加のオブジェクトを管理する必要はありません: DirectBitmap クラスは、メモリ リソースの管理を容易にするために IDisposable を実装します。
  • 安全でないコードは必要ありません: このクラスは、コードのセキュリティを確保するために安全でないコード ブロックを必要としません。

パフォーマンスの比較

次の表は、ダイレクト ビットマップ メソッドのパフォーマンスを LockBits および SetPixel メソッドと比較しています。

方法 4x4 16x16 64x64 256x256 1024x1024 4096x4096
DirectBitmap 2 28 668 8219 178639
LockBits 2 3 33 670 9612 197115
SetPixel 45 371 5920 97477 1563171 25811013
表からわかるように、

クラスは、特に大きなビットマップを処理する場合、パフォーマンスにおいて DirectBitmap を大幅に上回っています。 SetPixel

結論

ビットマップ処理アプリケーションでのピクセル操作の場合、カスタム

クラスを使用すると、パフォーマンスが大幅に向上します。このアプローチにより、ロックおよびロック解除操作が不要になり、ビットマップ データへの直接アクセスが提供されるため、より高速な処理が可能になります。 DirectBitmap

以上がGetPixel と SetPixel を超えて C# でのビットマップ ピクセル操作を高速化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート