Estoy intentando crear una aplicación de gráficos simple en WPF C#. El objetivo es dibujar 10000 * 10000 rectángulos de tamaño 4 píxeles cada uno.Implementar una operación más rápida de gráficos en WPF Canvas
He modificado el método OnRender del lienzo para dibujar los rectángulos. Los dibujos se realizan para un número menor de rectángulos (digamos 50 * 50 o 100 * 100 rectángulos de 4 píxeles cada uno), pero se está desacelerando a medida que aumente el número. de rectángulos.
que sigue es mi código:
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
FillCells(dc);
if (_ShowGrids)
{
DrawGrid(dc); // draw grid lines
}
}
void FillCells(DrawingContext dc)
{
int cellSize=4;
for (int i = 0; i < MaxRow; i++)
{
for (int j = 0; j < MaxColumn; j++)
{
dc.DrawRectangle(GetRectBrush(i,j), GetRectPen(i,j), new Rect(j * cellSize , i * cellSize , cellSize - 1, cellSize - 1));
}
}
}
El código anterior se lleva más de un minuto para dibujar rectángulos 1000 * 1000.
¿Hay algún método para acelerar este proceso? ¿Hay alguna otra cosa que pueda usar en lugar de esto?
Gracias.
¿Ha considerado usar un visualBrush? – TerrorAustralis
No, no lo hice. ¿Podría darme algunos ejemplos de Visual Brush por favor? –
¿Está almacenando los colores de cada rectangel en la memoria? Si no, ¿qué está haciendo GetRectBrush (i, j)? – TerrorAustralis