GDI+ Performance mit grösseren Bitmaps
-
Ich habe ein 5000x7000 PNG Bild. In einem kleineren Fenster soll nun durch dieses Bild gescrollt und auch rotiert werden können. Und zwar mit Änderung der Verschiebung und Rotation alle 100ms.
Die versuche das Bild jedesmal mit DrawImage zu zeichnen hab ich schnell aufgegeben, da das Zeichnen etwa 3 Sekunden geht. Mit einem CachedBitmap geht alles viel schneller, aber damit gehen leider keine Rotationen mehr.
Sinnvoll wäre eventuell nur einen gewissen Bereich des Bitmaps auszuschneiden, rotieren und zu zeichnen. Leider hat das auch nicht gerade viel gebracht, da das zeichnen eines kleineren Bereiches mit DrawImage kaum einen Geschwindigkeitsvorteil bringt.
Da der Bildausschnitt und die Drehung zudem andauernd ändern ist auch das Zwischenspeichern kaum möglich.Hat jemand eine Idee wie ich schnell einen Ausschnitt aus einem Bitmap bekomme, ihn rotieren kann und dann zeichnen?
Ist GDI+ überhaupt sinnvoll dafür, oder gibt es eine andere Library die schnell für Bitmaps ist? DirectX und OpenGL können leider nicht verwendet werden.
-
Hallo
Wenn du immer nur in 90 Gradschritten drehst, könntest du das Bild
4 mal gedrecht in einen Memory DC speichern, und dann immer nur aus einem diesen
DC's zeichen.
-
Hi,
leider müssen es beliebige Winkel sein.
-
DirectX und OpenGL können leider nicht verwendet werden.
Wieso denn nicht?
-
Weil es ein Window innherhalb einer Vollbild DX Anwendung ist.
-
Ah.
Auch doof.
Hmmmm...Naja, selbär schreiben ginge noch

Oder guck zu ob du irgendwo so einen Code in einer Open Source Library findest den du copy/pasten könntest.
-
Ich bin mir gerade selber einen code am schreiben, wenn ich den fertig habe kann ich ihn dir ja mal schicken!
-
BTW: kann nicht die SDL sprites rotieren? Den Code könnte man ja u.U. als Basis hernehmen. D.h. natürlich wenn die Lizenz der SDL das zulässt (k.A. was die für eine Lizenz verwendet).