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 ...

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top