Entwickler-Ecke

Multimedia / Grafik - Grafik Zentriert rotieren


VampireSilence - So 06.11.11 15:23
Titel: Grafik Zentriert rotieren
Hallo Zusammen,

ich versuche eine Grafik so auf der Stelle zu drehen, dass ihr Mittelpunkt immer am gleichen Punkt ist (so wie ein Autorad). Das mit dem Drehen funktioniert auch, aber nur um den Punkt(0,0). Ich habe mir also gedacht, ich verändere einfach den Origin-Point in der umgekehrten Richtung, den ich dann dem DrawImage übergebe. Dieser müsste sich ja dann um die Grafik herumdrehen und das Bild dann immer an der gleichen Stelle rendern lassen (theoretisch!). Aber das funktioniert nicht, oder ich komme einfach nicht drauf. Jedenfalls sitze ich jetzt schon seit geschlagenen 2 Stunden an diesem blöden Punkt und es wird einfach nichts. Der Code sieht gerade so aus:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
    // int angle++
    // targetbitmap.size = 40, 48
    // sourcebitmap.size = 40, 40
    // timer.intervall = 40
            e.Graphics.RotateTransform(angle, System.Drawing.Drawing2D.MatrixOrder.Prepend );
            Point origin =new Point(20 - (int)(Math.Cos(-angle / 180.0f * Math.PI) * 20),24 - (int)(Math.Sin(-angle / 180.0f * Math.PI) * 20));
            e.Graphics.DrawImage(source, origin );

Ich verzweifle gerade dadran, das muss doch irgendwie zu machen sein. Hoffe ihr habt da nen Tipp für mich.

mfg
- VampireSilence


Th69 - Mo 07.11.11 11:57

Hallo,

mit einer Internet-Suche nach "C# Rotate Image" wärst du aber schnell zum Ergebnis gekommen, z.B. http://dotnet-snippets.com/dns/image-rotation-by-angle-SID600.aspx


VampireSilence - Mo 07.11.11 20:03

Das hatte ich schon gefunden, aber die Methode hat den Nachteil, dass sie das Bild nach und nach immer unschärfer macht. Ich habe mir jetzt damit geholfen, dass ich zuerst die Bilder mit Gimp vorbereite (60 Stück, jeweils um 6° gedreht) und diese jetzt entsprechend abrufe. Das hat auch noch den Vortei, dass es etwas performanter abläuft, da keine Berechnungen mehr durchgeführt werden müssen, sondern nur noch pixelweise kopiert wird. Klingt vielleicht erstmal umständlich, aber es funktioniert sehr gut.

mfg
- VampireSilence


Kha - Mo 07.11.11 21:03

Wie kann es denn "nach und nach immer unschärfer" werden, wenn das Quellbild gar nicht verändert wird :gruebel: ?


VampireSilence - Di 08.11.11 07:11

Oh stimmt, anstatt das selbe Bild immer wieder um 1° zu drehen, könnte ich auch das gleiche Quellbild nach und nach um steigende Winkelwerte drehen.
Aber das Argument mit der Performance bleibt. :P

mfg
- VampireSilence