为什么BitmapData.Strede忽略传递给LockBits的矩形的大小

本文关键字:LockBits Strede BitmapData 为什么 | 更新日期: 2023-09-27 18:30:13

我有一张图像,想要读取特定区域中的像素值。

我假设LockBits()方法的第一个参数矩形是为了允许指定子部分。不过,在调试时,我注意到BitmapData.Stride的值是原始位图宽度的3倍,而不是矩形宽度的3 x。

为什么会这样?我是否误解了矩形参数的用途?

为什么BitmapData.Strede忽略传递给LockBits的矩形的大小

它为GDI+提供了一种优化像素数据到内存映射的方法。使用较小的矩形需要较少的内存页。步幅与原始位图的步幅相同。在位图中对扫描线进行索引时,无论矩形的大小,都必须使用该值。

它这样做是为了向您提供一个指向已分配缓冲区的指针,而不是分配一个新的指针并将像素数据复制到其中。