Dalam aplikasi C#, kaedah GetPixel
dan SetPixel
biasanya digunakan untuk memanipulasi peta bit. Walau bagaimanapun, dalam beberapa kes prestasi mereka boleh menjadi halangan. Artikel ini meneroka alternatif yang lebih pantas dan menilai potensi peningkatan prestasi.
Tersuai DirectBitmap
menyediakan akses terus kepada data peta bit tanpa operasi penguncian dan buka kunci perantaraan. Pendekatan ini membolehkan operasi piksel yang lebih pantas:
<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
melaksanakan IDisposable
untuk memudahkan pengurusan sumber ingatan. Jadual berikut membandingkan prestasi kaedah bitmap langsung dengan kaedah LockBits
dan 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 |
Seperti yang dapat dilihat daripada jadual, kelas DirectBitmap
dengan ketara mengatasi prestasi SetPixel
, terutamanya apabila berurusan dengan peta bit yang lebih besar.
Untuk manipulasi piksel dalam aplikasi pemprosesan bitmap, menggunakan kelas DirectBitmap
tersuai boleh meningkatkan prestasi dengan ketara. Pendekatan ini membolehkan pemprosesan lebih pantas dengan menghapuskan operasi mengunci dan membuka kunci serta menyediakan akses terus kepada data bitmap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mempercepatkan Manipulasi Piksel Bitmap dalam C# Beyond GetPixel dan SetPixel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!