Я пытаюсь вызвать метод WriteableBitmap.WritePixels, но я не могу понять параметры. Статья MSDN очень скучна (или shuold я говорю... null?), И я не мог понять, как использовать этот метод.
Edit: Я попытался изменить код из этой статьи: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap%28v=VS.90%29.aspx
PixelFormat pf = PixelFormats.Rgba128Float;
WriteableBitmap wb = new WriteableBitmap(width * 5, height * 5, 100, 100, pf, new BitmapPalette(new List<Color> { Color.FromArgb(255, 255, 0, 0) }));
byte[] ColorData = { 0, 0, 0, 0 };
wb.WritePixels(new Int32Rect(0, 0, 1, 1), ColorData, 4, 0);
Background.Source = wb;
В строке перед последней строкой отладчик утверждает, что размер буфера (ColorData) недостаточен.
Edit2: Я снова попробовал:
void RefreshGraphics()
{
PixelFormat pf = PixelFormats.Pbgra32;
WriteableBitmap wb = new WriteableBitmap(width * 5, height * 5, 100, 100, pf, new BitmapPalette(new List<Color> { Color.FromArgb(255, 255, 0, 0) }));
byte[] ColorData = new byte[1000];
byte t = 0;
for (int i = 0; i < 1000; i++)
ColorData[i] = t++;
wb.WritePixels(new Int32Rect(0, 0, 10, 10), ColorData, 10, 0);
Background.Source = wb;
}
Теперь "Значение не в ожидаемом диапазоне". СтекTrace не указывает, какой из них...
Изменить 3: Задача решена! Не знаю, как и почему, но работает код (и я боюсь изменить его...)