En manejador de pintura de mi control de usuario que iterar sobre una colección de objetos de mapa de bits predefinidos y atraerlos hacia el área de cliente de esta manera:¿Cómo aumentar el rendimiento sobre DrawImage de GDI (sin escala)?
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 comienza a atascarse cuando se agregan una docena de objetos a la colección. Mi pregunta es: ¿hay alguna manera de acelerar esto? ¿Sería posible usar 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 me ha dado muestras de tapa de la pantalla hasta el momento ...
ping atrás @ http://stackoverflow.com/questions/264720/gdi-graphicsdrawimage-really-slow – dankyy1