我试图通过使用图像和的BitmapSource得到从原始数据创建WPF中显示,一个位图:为什么BitmapSource.Create会引发ArgumentException?
Int32[] data = new Int32[RenderHeight * RenderWidth];
for (Int32 i = 0; i < RenderHeight; i++)
{
for (Int32 j = 0; j < RenderWidth; j++)
{
Int32 index = j + (i * RenderHeight);
if (i + j % 2 == 0)
data[index] = 0xFF0000;
else
data[index] = 0x00FF00;
}
}
BitmapSource source = BitmapSource.Create(RenderWidth, RenderHeight, 96.0, 96.0, PixelFormats.Bgr32, null, data, 0);
RenderImage.Source = source;
但是调用BitmapSource.Create引发ArgumentException,称“值不落在预期范围内“。这不是这样做的方式吗?我没有正确地打这个电话吗?
谢谢,但你究竟如何提出这种表达?为什么它不是简单的RenderWidth * 4?是不是一行的字节数? – 2009-12-31 04:26:03
对不起,我应该提供详细信息。在你的情况下,你有'bpp = 32'所以是公式简化为'RenderWidth * 4'。但有一些奇怪的情况(便宜的LCD使用18 bpp)以及扫描线必须在32位边界上对齐的事实。我提供了如何在上面提出的一般公式和解释。希望它是澄清。 – jason 2009-12-31 05:09:22
谢谢。还有一个问题。波浪对像这样的整数做什么? – 2009-12-31 05:23:51