Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mempercepatkan Manipulasi Bitmap dalam C# Beyond SetPixel dan GetPixel?
Mengoptimumkan Manipulasi Peta Bit dalam C#: Alternatif Unggul kepada SetPixel dan GetPixel
KaedahC# SetPixel
dan GetPixel
terkenal lambat untuk manipulasi bitmap. Artikel ini membentangkan alternatif yang lebih pantas dan lebih cekap.
Ketidakcekapan SetPixel/GetPixel
Kod berikut menunjukkan penggunaan tradisional dan tidak cekap SetPixel
dan GetPixel
:
<code class="language-csharp">// Inefficient code using SetPixel and GetPixel</code>
Pendekatan ini mengalami overhed yang ketara disebabkan oleh banyak panggilan ke GetPixel
dan SetPixel
.
Kelas DirectBitmap: Penyelesaian Berprestasi Tinggi
Alternatif yang sangat berkesan ialah kelas DirectBitmap
, menyediakan akses terus kepada data mentah bitmap. Ini memintas keperluan untuk GetPixel
dan SetPixel
, yang membawa kepada peningkatan prestasi yang ketara. Contoh menggunakan DirectBitmap
untuk melukis segi empat tepat:
<code class="language-csharp">using (var g = Graphics.FromImage(dbm.Bitmap)) { g.DrawRectangle(Pens.Black, new Rectangle(50, 50, 100, 100)); }</code>
Pengoptimuman Memori dengan Tatasusunan Byte
Untuk aplikasi yang menggunakan memori adalah yang paling utama, kelas DirectBitmap
boleh disesuaikan untuk menggunakan tatasusunan bait dan bukannya tatasusunan integer:
<code class="language-csharp">Bits = new byte[width * height * 4];</code>
Kelebihan Kelas DirectBitmap:
LockBits
dan mengurangkan overhed kutipan sampah.Bitmap
standard.Pertimbangan Penting:
DirectBitmap
kejadian untuk melepaskan memori yang disematkan.Perbandingan Penanda Aras Prestasi
Ujian penanda aras jelas menunjukkan prestasi unggul DirectBitmap
berbanding kaedah SetPixel
/GetPixel
dan LockBits
tradisional:
<code>| Method | 4x4 | 16x16 | 64x64 | 256x256 | 1024x1024 | 4096x4096 | |--------------|---------|----------|----------|-----------|------------|------------| | DirectBitmap | | | | | | |</code>
Kesimpulan
Kelas DirectBitmap
menawarkan peningkatan prestasi yang ketara berbanding kaedah manipulasi peta bit tradisional dalam C#. Akses langsungnya kepada data mentah dan mengelakkan panggilan GetPixel
/SetPixel
menjadikannya pilihan ideal untuk aplikasi sensitif prestasi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mempercepatkan Manipulasi Bitmap dalam C# Beyond SetPixel dan GetPixel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!