Wie berechne ich die erforderliche Puffergröße für die WriteableBitmap.WritePixels-Methode?Berechnen der erforderlichen Puffergröße für die WriteableBitmap.WritePixels-Methode
Ich verwende die Überladung unter vier Parameter, der erste ist ein Int32Rect, der nächste ist ein Byte-Array mit den RGBA-Zahlen für die Farbe, der dritte ist der Schritt (das ist die Breite meiner beschreibbaren Bitmap mit dem multipliziert Bits pro Pixel dividiert durch 8), und der letzte ist der Puffer (in Intellisense als Offset bezeichnet).
Ich erhalte die Puffergröße nicht ausreichend ist Laufzeitfehler in dem folgenden Code:
byte[] colourData = { 0, 0, 0, 0 };
var xCoordinate = 1;
var yCoordinate = 1;
var width = 2;
var height = 2;
var rect = new Int32Rect(xCoordinate, yCoordinate, width, height);
var writeableBitmap = new WriteableBitmap(MyImage.Source as BitmapSource);
var stride = width*writeableBitmap.Format.BitsPerPixel/8;
writeableBitmap.WritePixels(rect, colourData, stride,0);
Was die Formel ich brauche, ist zu verwenden, um den Pufferwert in dem obigen Code erforderlich zu berechnen?
Wenn Sie RGBA sagen, Sie haben sicherlich 32 Bit pro Pixel. Das macht 4 Bytes pro Pixel. In einem 2x2-Rect beträgt die Summe 16 Bytes (4 Pixel * 4 Bytes/pro Pixel). Deine 'coulorData' sind offensichtlich zu klein. – Clemens
@Clemens Meinst du, mein Schritt ist zu klein? Wenn nicht, könntest du erklären, wie die colorData zu klein ist, wie ich es nicht verstehe. Danke – JMK
Stride ist einfach die Anzahl der Bytes pro Zeile im Puffer. Sie haben 4 Bytes pro Pixel bei 2 Pixeln pro Zeile (d. H. Die Breite des Schreibrechtecks), was einen Schritt von 8 ergibt. – Clemens