Pregunta

En manejador de pintura de mi control de usuario que iterar sobre una colección de objetos de mapa de bits predefinidos y les señalará a la área de cliente de esta manera:

C # versión:

private void Control_Paint(object sender, PaintEventArgs e) {
    Graphics g = e.Graphics;
    foreach (BitmapObj bmpObj in _bitmapObjCollection) {
        g.DrawImageUnscaled(bmpObj.Bitmap, bmpObj.Location);
    }
}

versión VB.NET:

Private Sub Control_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    Dim g As Graphics = e.Graphics

    For Each bmpObj As BitmapObj In _bitmapObjCollection
        g.DrawImageUnscaled(bmpObj.Bitmap, bmpObj.Location)
    Next
End Sub

El código funciona bien, pero empieza a atascan cuando se añaden una docena de objetos de la colección. Mi pregunta es: ¿Hay una manera de acelerar este proceso? ¿Sería posible utilizar la función BitBlt Win32 para reemplazar DrawImageUnscaled? Y si es así, ¿cómo?

Gracias!

Nota: buscar en Google, para uso de BitBlt sólo ha cedido mi examinar muestras de capitalización hasta el momento ...

¿Fue útil?

Solución

Demasiado tarde, pero posiblemente alguien todavía necesita una solución.

He creado una pequeña biblioteca con GLGDI + + sintaxis similar GDI, que se ejecutan en OpenTK: http://code.google.com/p/glgdiplus/

No estoy seguro acerca de la estabilidad, que tiene algunos problemas con el lazo (problema TextPrint de OpenTK). Pero si necesita aumentar el rendimiento de su utilidad (como editor de niveles en mi caso) puede ser la solución.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top