Autor Beitrag
VampireSilence
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: So 06.11.11 15:23 
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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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. dotnet-snippets.com/...by-angle-SID600.aspx
VampireSilence Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: 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