如何計算WriteableBitmap.WritePixels方法所需的緩衝區大小?計算WriteableBitmap.WritePixels方法所需的緩衝區大小
我使用重載取四個參數,第一個是Int32Rect,下一個是包含顏色的RGBA數字的字節數組,第三個是stride(這是我寫的位圖的寬度乘以每像素位數除以8),最後一個是緩衝區(在Intellisense中稱爲偏移量)。
我收到緩衝區大小不足以運行時錯誤在下面的代碼:
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);
什麼公式我需要使用計算在上面的代碼所需要的緩衝值?
當你說RGBA,就肯定有每像素32位。這使得每個像素4個字節。在2x2矩形中,總數爲16字節(4像素×4字節/每像素)。你的'coulorData'顯然太小了。 – Clemens
@Clemens你是說我的步幅太小?如果不能解釋色彩數據太小,我不明白。 Thankyou – JMK
步幅只是緩衝區中每行的字節數。每行2像素(即寫矩形的寬度)每個像素4個字節,導致步幅爲8. – Clemens