我正在尝试调用WriteableBitmap.WritePixels方法,但我似乎无法理解参数.MSDN文章非常沉闷(或者说我说... null?),我无法理解如何使用该方法.
编辑: 我试图修改本文中的代码: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;
Run Code Online (Sandbox Code Playgroud)
在最后一行之前的行中,调试器声称缓冲区(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;
}
Run Code Online (Sandbox Code Playgroud)
现在"价值不在预期的范围内".stackTrace不知道哪一个......
编辑3: 解决了问题!不知道如何或为什么,但代码工作(我害怕改变它......)
这是我理解它的方式: