2011-04-17 70 views
3

任何人都知道Scan0和Stride是什么?我需要一个很好的解释谢谢。c#scan0和stride

+4

关于什么类?他们在哪里定义?在我们能够给出一个好的解释之前,我们需要一个好问题。 – Oded 2011-04-17 06:32:30

回答

11

你谈论BitmapData类?如果是这样,文档中的描述是相当清楚,我想:

Scan0

获取或设置位图中的第一像素数据的地址。这也可以被认为是位图中的第一条扫描线。

换句话说,这可以让您找到要检查或更改的数据 - 甚至可以让您将位图制作成完全不同的数据。

Stride

跨距是像素的单行(扫描线)的宽度,向上舍入到一个四字节的边界。如果迈步是肯定的,则位图是自顶向下的。如果步幅是负数,则位图是自下而上的。

如果您想从一行移动到下一行,则需要将步幅添加到当前正在查看的行的地址。行对齐到4个字节的边界,以便各种代码可以更高效地访问它。 (CPU中的各种操作经过优化,可在4字节或8字节的边界上工作。)

+0

我看到了Scan0的用途是什么?它只扫描位图的第一行。 对于迈步,如果我想移动到下一行,imagePointer1 + = 4;是通过使用这个? <<<< – joonshen 2011-04-17 06:47:24

+0

@joonshen:你不会增加4--你通过步伐增加。 – 2011-04-17 07:11:16