In Direct3D ist das treiberabhängig. In dem Bereich zwischen dem letzten Pixel einer Zeile und dem Pitch bzw. Stride befindet sich ein Cache, oder einfach nur Padding-Bytes, die die Grafikkarte fordert. An diese Hardwareanforderungen muss sich auch Microsoft halten.
Bei GDI-Bitmaps müssen die Zeilen nach 32-Bit-Grenzen ausgerichtet sein. Das hängt damit zusammen, dass eine CPU immer 32 Bit liest (jedenfalls die 32-Bit-CPUs (c; ). Daher ist in vielen Fällen ein 32-Bit-Format auch schneller zu bearbeiten als ein 24-Bit-Format, denn bei letzterem muss man unter Umständen bis zu 64 Bit lesen und wilde Bitverschiebungen durchführen ("Aufdröselung" (c; ), um einen Pixel zu bekommen.
Ich weiß nicht, ob du das so meinst, aber nochmal zur Sicherheit: Der Pitch ist der Abstand zwischen den Anfängen zweier aufeinanderfolgenden Zeilen, also die Differenz in Bytes zwischen den Zeigern auf die Zeilen. Wenn du drüber nachdenkst, kommst du drauf, das es keinen Unterschied machst, ob du einen Pixel so:
pixel = array[y*Width+x]
oder so:
pixel = array[y*Stride+x]
addressierst. "Aufdröselung" ist also etwas übertrieben ;c)
_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.