gpt4 book ai didi

c# - 计算 WriteableBitmap.WritePixels 方法所需的缓冲区大小

转载 作者:可可西里 更新时间:2023-11-01 07:44:34 27 4
gpt4 key购买 nike

如何计算 WriteableBitmap.WritePixels 方法所需的缓冲区大小?

我正在使用带四个参数的重载,第一个是 Int32Rect,第二个是包含颜色的 RGBA 数字的字节数组,第三个是步幅(这是我的可写位图的宽度乘以位每个像素除以 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);

我需要使用什么公式来计算上述代码中所需的缓冲区值?

最佳答案

步幅值计算为写入矩形中每个“像素线”的字节数:

var stride = (rect.Width * bitmap.Format.BitsPerPixel + 7) / 8;

所需的缓冲区大小是每行字节数乘以行数:

var bufferSize = rect.Height * stride;

假设您有一个 2x2 的写入矩形和每像素 32 位的格式,例如PixelFormats.Pbgra32,您得到的 stride 为 8,bufferSize 为 16。

关于c# - 计算 WriteableBitmap.WritePixels 方法所需的缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com