Come si calcola la dimensione del buffer richiesta per il metodo WriteableBitmap.WritePixels?Calcolo della dimensione del buffer richiesta per il metodo WriteableBitmap.WritePixels
Sto utilizzando il sovraccarico con quattro parametri, il primo è un Int32Rect, il successivo è un array di byte contenente i numeri RGBA per il colore, il terzo è il passo (che è la larghezza della mia bitmap scrivibile moltiplicata per il bit per pixel diviso per 8) e l'ultimo è il buffer (indicato come offset in Intellisense).
sto ottenendo la dimensione buffer non è sufficiente errore runtime nel codice qui sotto:
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);
Qual è la formula che ho bisogno di utilizzare per calcolare il valore del tampone necessario nel codice sopra?
Quando si dice RGBA, certamente ha 32 bit per pixel. Questo rende 4 byte per pixel. In un 2x 2x il totale è di 16 byte (4 pixel * 4 byte/per pixel). Il tuo 'coulorData' è ovviamente troppo piccolo. – Clemens
@Clemens Vuoi dire che il mio Stride è troppo piccolo? Se no, potresti spiegare come il coloreData sia troppo piccolo, come non capisco. Thankyou – JMK
Stride è semplicemente il numero di byte per riga nel buffer. Hai 4 byte per pixel a 2 pixel per linea (cioè la larghezza del rettangolo di scrittura), risultando in un passo di 8. – Clemens