Nel gestore vernice del mio controllo utente Ho iterare su una collezione di oggetti Bitmap predefiniti e disegnarli per l'area client così:Come aumentare le prestazioni su DrawImage di GDI (non ridimensionato)?
C# versione:
private void Control_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
foreach (BitmapObj bmpObj in _bitmapObjCollection) {
g.DrawImageUnscaled(bmpObj.Bitmap, bmpObj.Location);
}
}
versione 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
Il codice funziona correttamente ma inizia a impantanarsi quando una dozzina di oggetti vengono aggiunti alla raccolta. La mia domanda è: c'è un modo per accelerare questo? Sarebbe possibile utilizzare la funzione bitmap Win32 per sostituire DrawImageUnscaled? E se sì, come?
Grazie!
Nota: Googling per useage di BitBlt mi ha ceduto solo i campioni cap schermo finora ...
ping indietro @ http://stackoverflow.com/questions/264720/gdi-graphicsdrawimage-really-slow – dankyy1