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

时间:2012-04-05 16:09:33

标签: c# lockbits

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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