Estoy tratando de llamar al método WriteableBitmap.WritePixels, pero parece que no puedo entender los parámetros. El artículo de MSDN es muy aburrido (O shuold, digo ... ¿nulo?), Y no pude entender cómo usar el método.Llamando al método WriteableBitmap.WritePixels
Editar: traté de modificar un código de este artículo: 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;
En la línea antes de la última línea del depurador afirma que el (ColorData) tamaño del búfer no es suficiente.
Edit2: Lo intenté de nuevo:
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;
}
Ahora, un "Valor no está en el rango esperado." El StackTrace no dice cuál ...
Datos 3: Problema resuelto! No sé cómo o por qué, pero el código funciona (y tengo miedo de cambiarlo ...)
La altura y el ancho de qué? ¿El rectángulo o el objeto WritableBitmap? –
¿Y cuál debería ser el tamaño de la matriz comparada con la altura/ancho? –
Si no comprende cuál es el tamaño, no comprende lo que está haciendo. ¡Lee el artículo en la respuesta de JacobJ! –