2012-04-05 9 views
1

Ich habe ein Bild und möchte die Pixelwerte in einer bestimmten Region lesen.Warum ignoriert BitmapData.Stride die Größe des an LockBits übergebenen Rechtecks?

Ich nahm an, dass das Rechteck, das das 1. Argument der LockBits()-Methode ist, da war, um zu ermöglichen, dass Unterabschnitte spezifiziert wurden. Beim Debugging bemerkte ich jedoch, dass der Wert BitmapData.Stride 3 x der Breite der ursprünglichen Bitmap und nicht 3 x der Breite des Rechtecks ​​betrug.

Warum ist das? Habe ich den Zweck des Rechteckparameters missverstanden?

Antwort

2

Es gibt GDI + eine Möglichkeit, die Zuordnung der Pixeldaten zum Speicher zu optimieren. Die Verwendung eines kleineren Rechtecks ​​erfordert weniger Speicherseiten. Der Schritt ist derselbe, der Schritt der ursprünglichen Bitmap. Und Sie müssen diesen Wert verwenden, wenn Sie die Scanlinien in der Bitmap indizieren, unabhängig von der Größe des Rechtecks.

0

Es tut dies, damit es Ihnen einen Zeiger in den Puffer zur Verfügung stellen kann, den es bereits zugewiesen hat, anstatt einen neuen zuzuweisen und die Pixeldaten zu ihm zu kopieren.

Verwandte Themen