2012-04-05 2 views
1

이미지가 있고 특정 지역의 픽셀 값을 읽고 싶습니다.BitmapData.Stride가 LockBits에 전달 된 사각형의 크기를 무시하는 이유는 무엇입니까?

LockBits() 메서드의 첫 번째 인수 인 사각형을 사용하여 하위 섹션을 지정할 수 있다고 가정했습니다. 그러나 디버깅 할 때 BitmapData.Stride의 값은 사각형의 너비가 아니라 3 x 원래 비트 맵의 ​​너비임을 알게되었습니다.

왜 이런가요? 사각형 매개 변수의 목적을 잘못 이해 했습니까?

답변

2

GDI +는 픽셀 데이터를 메모리에 매핑하는 방법을 최적화합니다. 작은 사각형을 사용하면 필요한 메모리 페이지 수가 줄어 듭니다. 보폭은 원래 비트 맵의 ​​보폭과 같습니다. 그리고 사각형의 크기에 관계없이 비트 맵에서 스캔 라인을 인덱싱 할 때이 값을 사용해야합니다.

0

이렇게하면 새 버퍼를 할당하고 픽셀 데이터를 복사하는 대신 이미 할당 한 버퍼에 대한 포인터를 제공 할 수 있습니다.