我試圖通過使用圖像和的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