Wie Leistung über GDI DrawImage (Unscaled) zu erhöhen?
-
24-09-2019 - |
Frage
In meiner Benutzersteuerung des Lackes Handler I Iterierte über eine Sammlung von vordefinierten Bitmap-Objekten und sie an den Client-Bereich zieht so:
C # Version:
private void Control_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
foreach (BitmapObj bmpObj in _bitmapObjCollection) {
g.DrawImageUnscaled(bmpObj.Bitmap, bmpObj.Location);
}
}
VB.NET Version:
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
Der Code funktioniert gut, aber beginnt zu versinken, wenn ein Dutzend oder so Objekte der Sammlung hinzugefügt werden. Meine Frage ist: Gibt es eine Möglichkeit, diese zu beschleunigen? Wäre es möglich, die Win32 BitBlt-Funktion verwenden DrawImageUnscaled zu ersetzen? Und wenn ja, wie?
Danke!
Hinweis: für useage von BitBlt Googeln hat mir screenen Kappe Proben nur ergab bisher ...
Lösung
Zu spät, aber vielleicht jemand muss noch eine Lösung.
Ich habe eine kleine Bibliothek GLGDI + erstellt mit similiar GDI + Syntax, die auf OpenTK ausführen: http://code.google.com/p/glgdiplus/
Ich bin mir nicht sicher über die Stabilität, hat es einige Probleme mit DrawString (Problem mit TextPrint von OpenTK). Aber wenn Sie Performance-Schub für Ihr Dienstprogramm benötigen (wie Level-Editor in meinem Fall) kann es Lösung sein.