WritableImage.WritePixels(),如何解决异常“缓冲区大小不足”?

时间:2016-11-06 12:35:24

标签: c#

我想用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);
        }
    }

如何解决此异常?

0 个答案:

没有答案