Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Meningkatkan Prestasi Manipulasi Peta Bit dalam Apl Borang C# Windows Melebihi SetPixel dan GetPixel?

Bagaimanakah Saya Boleh Meningkatkan Prestasi Manipulasi Peta Bit dalam Apl Borang C# Windows Melebihi SetPixel dan GetPixel?

Barbara Streisand
Lepaskan: 2025-01-19 02:36:08
asal
880 orang telah melayarinya

How Can I Improve Bitmap Manipulation Performance in C# Windows Forms Apps Beyond SetPixel and GetPixel?

Meningkatkan Kelajuan Manipulasi Peta Bit dalam Borang Windows C#: Alternatif kepada SetPixel dan GetPixel

SetPixel dan GetPixel terkenal lambat untuk manipulasi bitmap dalam aplikasi C# Windows Forms. Artikel ini meneroka alternatif berprestasi tinggi.

Kelas DirectBitmap: Pendekatan Unggul

Kelas DirectBitmap menyediakan akses terus kepada data bitmap, memintas overhed prestasi LockBits dan SetPixel:

<code class="language-csharp">public class DirectBitmap : IDisposable
{
    // ...
    public void SetPixel(int x, int y, Color colour)
    {
        int index = x + (y * Width);
        int col = colour.ToArgb();
        Bits[index] = col;
    }

    public Color GetPixel(int x, int y)
    {
        int index = x + (y * Width);
        int col = Bits[index];
        Color result = Color.FromArgb(col);
        return result;
    }
    // ...
}</code>
Salin selepas log masuk

Manipulasi ingatan langsung ini mengurangkan peruntukan memori dengan ketara, yang membawa kepada pemprosesan yang lebih pantas.

Data Piksel Mentah dengan Bait: Lebih Pantas

Untuk kelajuan muktamad, nyatakan data piksel menggunakan bait dan bukannya integer:

<code class="language-csharp">Bits = new byte[width * height * 4];</code>
Salin selepas log masuk

Setiap piksel kini menggunakan 4 bait (ARGB). Ingat untuk melaraskan SetPixel dan GetPixel dengan sewajarnya.

Kelebihan DirectBitmap:

  • Akses memori terus untuk prestasi unggul.
  • Pengurusan ingatan yang cekap dengan Dispose().
  • Tidak memerlukan sekatan kod yang tidak selamat.

Perhatian:

  • Memori yang disematkan boleh memberi kesan kepada kutipan sampah. Gunakan dengan bijak untuk senario prestasi kritikal.
  • Akses terus kepada data bitmap membolehkan penyepaduan yang lancar dengan objek Graphics.

Tanda Aras Prestasi:

Ujian prestasi menunjukkan kelebihan jelas DirectBitmap:

Method 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

Dengan melaksanakan teknik yang dioptimumkan ini, pembangun C# boleh meningkatkan kecekapan manipulasi bitmap secara mendadak dalam aplikasi Borang Windows mereka.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meningkatkan Prestasi Manipulasi Peta Bit dalam Apl Borang C# Windows Melebihi SetPixel dan GetPixel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan