我想用WritableImage创建一个ImageSource对象。 我的图像由多个其他图像组成。 但是当我调用WritePixels方法时,我有这个例外:
PresentationCore.dll中出现“System.ArgumentException”类型的异常,但未在用户代码中处理。 附加信息:缓冲区大小不足。
这是我的代码:
private class Sprite
{
private int
m_x,
m_y,
m_pHeight,
m_pWidth,
m_stride;
private byte[] m_pixels;
public Sprite (BitmapImage bimg, int x, int y)
{
m_x = x;
m_y = y;
m_pHeight = bimg.PixelHeight;
m_pWidth = bimg.PixelWidth;
//calculate stride
m_stride = m_pWidth * ((bimg.Format.BitsPerPixel + 7) / 8);
// Create data array to hold source pixel data
m_pixels = new byte[m_stride * m_pHeight];
// Copy source image pixels to the data array
bimg.CopyPixels(m_pixels, m_stride, 0);
}
public void WritePixel (WriteableBitmap wbm)
{
wbm.WritePixels(
new System.Windows.Int32Rect(m_x, m_y, m_pWidth, m_pHeight),
m_pixels, m_stride, 0);
}
}
如何解决此异常?