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 중국어 웹사이트의 기타 관련 기사를 참조하세요!