2D Bild drehen

Status
Nicht offen für weitere Antworten.

Paladin

Bekanntes Mitglied
Hi,

ich mache gerade meine ersten Versuche mit 2D Grafiken in Java. Bin zur Zeit dabei ein Programm zu erstellen welches dem User einen Tacho anzeigt. Dieser Tacho soll dem User einen bestimmten Status anzeigen. Auf meinem Tacho stehen die Werte 2, 4, 6, 8, 10, 12 und 14. Je nachdem welchen Parameter die paintComponent Methode bekommt soll die Tachonadel jetzt auf einen dieser Werte gesetzt werden. Natürlich sollte es auch möglich sein, dass jemand so etwas wie 2.1 eingibt und auch das korrekt auf dem Tacho angezeigt wird.

Den Tacho habe ich mit den Klassen von awt.geom.* gezeichnet. Die Tachonadel habe ich mit einem Grafikprogramm erstellt und als Grafik in die Mitte des Tachos gesetzt. Wenn ich die Grafik jetzt drehe ändern sich die x und y Werte so dass der Tacho sich verschiebt. Ich habe bis jetzt noch keine Formel gefunden mit der ich die neuen x und y Werte berechnen kann nachdem ich die Grafik gedreht habe.

Hat jemand von euch hier Erfahrung und kann mir einen Tipp geben wie ich das hinbekomme?

Ich lege mal noch den Quellcode meiner paintComponent Methode bei damit ihr sehen könnt wie ich das Thema angefangen habe.

Code:
protected void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    Image tacho=null;
    try {
        tacho = ImageIO.read(ClassLoader.getSystemResource( "tacho.png" ));
    } catch (IOException e) {
        e.printStackTrace();
    }

    Font normalfont = new Font("Arial", Font.BOLD, 14);
    g2.setFont(normalfont);
    g2.setStroke( new BasicStroke( 2,
        BasicStroke.CAP_SQUARE  , BasicStroke.JOIN_MITER ) );
				
    Ellipse2D ellipse2d = new Ellipse2D.Double(20,10,250,240);
    Ellipse2D center = new Ellipse2D.Double(135,120,20,20);
    Line2D w_line = new Line2D.Double(20,130,50,130);
    Line2D n_line = new Line2D.Double(145,10,145,40);
    Line2D o_line = new Line2D.Double(240,130,270,130);
    Line2D sw_line = new Line2D.Double(80,198,60,218);
    Line2D so_line = new Line2D.Double(230,218,210,198);
    Line2D nw_line = new Line2D.Double(51,51,71,71);
    Line2D no_line = new Line2D.Double(217,70,237,50);
    Rectangle2D gesamt1 = new Rectangle2D.Double(130, 210, 10, 20);
    Rectangle2D gesamt2 = new Rectangle2D.Double(142, 210, 10, 20);
    Rectangle2D gesamt3 = new Rectangle2D.Double(154, 210, 10, 20);
    Rectangle2D gesamt_rahmen = new Rectangle2D.Double(128, 208, 39, 24);
				
    g2.drawString(tachoname, 115, 110);
    g2.drawString(var1, 90, 190);
    g2.drawString(var2, 60, 135);
    g2.drawString(var3, 80, 85);
    g2.drawString(var4, 142, 65);
    g2.drawString(var5, 195, 85);
    g2.drawString(var6, 215, 135);
    g2.drawString(var7, 190, 190);
		
    g2.draw(ellipse2d);
    g2.draw(center);
				
    g2.draw(w_line); //West 
    g2.draw(o_line); //Ost		
    g2.draw(n_line); //Nord
    g2.draw(sw_line); //Südwest
    g2.draw(so_line); //Südost
    g2.draw(nw_line); //Nordwest
    g2.draw(no_line); //Nordost
    g2.draw(gesamt_rahmen);
    g2.fill(gesamt1);
    g2.fill(gesamt2);
    g2.draw(gesamt1);
    g2.draw(gesamt2);
    g2.setColor(Color.white);
    g2.fill(gesamt3);
    g2.draw(gesamt3);
				
    g2.drawString(gesamtzahl_pos1, 132, 225);
    g2.drawString(gesamtzahl_pos2, 144, 225);
    g2.setBackground(Color.black);
    g2.setColor(Color.black);
    g2.drawString(gesamtzahl_pos3, 156, 225);
		
    AffineTransform aft = new AffineTransform();
    int pos = 0;
    int basisx = 134;
    int basisy = 120;
    aft.rotate(Math.toRadians(pos),136,52);
    g2.setTransform(aft);
    g2.drawImage(tacho,x,y,this); //14		
}

Vielen Dank im Voraus

Gruß

Paladin
 

Paladin

Bekanntes Mitglied
Hi LoN_Nemesis,

danke für den Tipp. Habe es jetzt hinbekommen.

Vielen Dank nochmals

Gruß

Paladin
 

Paladin

Bekanntes Mitglied
Mein Fehler war, dass ich die Achse um welche die Grafik rotieren soll nicht korrekt gesetzt hatte.
Ich hatte bei meinen ersten Versuchen immer die Grafik mit den folgenden Codezeilen gedreht:

Code:
AffineTransform aft = new AffineTransform();
aft.rotate ( Math.toRadians( rotation ));
g2.drawImage(bild, imagePos_x, imagePos_y, this);

aft.rotate besitzt aber noch einen zweiten Konstruktor mit dem man bei der Drehung die Rotationsachse setzen kann:

Code:
AffineTransform aft = new AffineTransform();
aft.rotate ( Math.toRadians( rotation ), imageAxis_x, imageAxis_y);
g2.drawImage(bild, imagePos_x, imagePos_y, this);

Nachdem ich die Rotationsachse nun korrekt gesetzt hatte bewegte sich die Tachonadel genau so wie ich mir das vorgestellt hatte.

Gruß

Paladin
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Bild in Richtung Maus drehen Spiele- und Multimedia-Programmierung 4
M 2D - Bild um y-Achse drehen Spiele- und Multimedia-Programmierung 9
R Bild drehen Spiele- und Multimedia-Programmierung 24
X Bild auf aktueller position drehen Spiele- und Multimedia-Programmierung 2
B Bild wird nicht geladen Spiele- und Multimedia-Programmierung 4
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
S Wie kann ich ein Bild in einen Frame einfügen? Spiele- und Multimedia-Programmierung 2
U DPI von einem Bild definieren Spiele- und Multimedia-Programmierung 5
J Bild ohne Quallitätsverlust skalieren Spiele- und Multimedia-Programmierung 11
Silvascus Bild --> JFrame Hintergrund Spiele- und Multimedia-Programmierung 3
D getsubimage aus BufferedImage und Rueckwandlung in ein ImagePlus bild Spiele- und Multimedia-Programmierung 0
A Bild(sequenz) wird nicht geladen Spiele- und Multimedia-Programmierung 1
windl EXIFF Header in ein Bild schreiben Spiele- und Multimedia-Programmierung 0
B Bild ohne Image auf die Festplatte streamen Spiele- und Multimedia-Programmierung 4
R [lwjgl] Cursor -> versetzt Zeichnen / Bild ist umgedreht Spiele- und Multimedia-Programmierung 2
F [JMyron] Bild von int[] zu BufferedImage Spiele- und Multimedia-Programmierung 2
Hoppelmann Alphamap (Bild) für 3D-Terrain generieren Spiele- und Multimedia-Programmierung 2
K Bild von USB-Webcam über JMF Spiele- und Multimedia-Programmierung 2
M Farbwerte für Flächen aus einem Bild erkennen Spiele- und Multimedia-Programmierung 3
S Wolken Bild/Grafik vom Programm erstellen lassen Spiele- und Multimedia-Programmierung 11
P Bild Pixelweise auslesen Spiele- und Multimedia-Programmierung 13
K Bild berührt Bild Spiele- und Multimedia-Programmierung 29
aze Nicht rechteckiges Bild zeichnen Spiele- und Multimedia-Programmierung 5
A Bild einer Webcam auffangen Spiele- und Multimedia-Programmierung 20
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
lumo LWJGL - Bild rendern Spiele- und Multimedia-Programmierung 16
A .jpg-Bild auf andere Position verschieben Spiele- und Multimedia-Programmierung 4
F Bild im sourcecode Spiele- und Multimedia-Programmierung 32
F Bild einfärben Spiele- und Multimedia-Programmierung 5
J JOGL - Bild wird immer wieder weiß Spiele- und Multimedia-Programmierung 2
Q Rechteck in BIld suchen Spiele- und Multimedia-Programmierung 8
M Bild kopieren Spiele- und Multimedia-Programmierung 2
S Bild capturen mit direcShow Spiele- und Multimedia-Programmierung 2
B Character Bild links/rechts Spiele- und Multimedia-Programmierung 19
Developer_X Bild Größe einstellen Spiele- und Multimedia-Programmierung 2
ARadauer bild in bild suchen Spiele- und Multimedia-Programmierung 6
S Bild spiegeln Spiele- und Multimedia-Programmierung 7
N Farberkennung und -ersetzung in einem Bild Spiele- und Multimedia-Programmierung 2
G Palette aus Bild extrahieren Spiele- und Multimedia-Programmierung 5
A Wasserzeichen auf Bild Spiele- und Multimedia-Programmierung 2
G Paintsurface ins Bild konvertieren Spiele- und Multimedia-Programmierung 8
M Sich nach links verschiebendes Bild Spiele- und Multimedia-Programmierung 2
F Bild generieren Spiele- und Multimedia-Programmierung 3
J Animation hinter transparentem Bild auf der GlassPane Spiele- und Multimedia-Programmierung 6
A Kein Bild Spiele- und Multimedia-Programmierung 3
T Bild als mehrdimesionaler Array Spiele- und Multimedia-Programmierung 4
H Bild von Webcam laden Spiele- und Multimedia-Programmierung 4
P Bild, Pixel- / Bereichsfarbe auslesen Spiele- und Multimedia-Programmierung 12
G start Bild einfrügen in ein Java Spiel Spiele- und Multimedia-Programmierung 7
Quaxli off-topic: HDR-Bild errechnen Spiele- und Multimedia-Programmierung 3
P linie in bild zeichnen Spiele- und Multimedia-Programmierung 2
G Auf Tastendruck bild verschieben Spiele- und Multimedia-Programmierung 5
O ich hab da ein problem mit nem bild Spiele- und Multimedia-Programmierung 8
C JPEG oder BMP Bild erstellen Spiele- und Multimedia-Programmierung 5
A Bild im Raum darstellen (Texture2D) Spiele- und Multimedia-Programmierung 4
V Wie berechnet man das Bild eines Schwarzen Loches in Java? Spiele- und Multimedia-Programmierung 10
K Einzelne Pixel in einem Bild lesen Spiele- und Multimedia-Programmierung 5
N Bild zu zeichnen (drawImage) klappt nur manchmal?? Spiele- und Multimedia-Programmierung 8
P repaint verschiebt das Bild Spiele- und Multimedia-Programmierung 2
S BMP-Bild Pixel für Pixel bearbeiten Spiele- und Multimedia-Programmierung 1
M durchsichtiges Bild nach clearRect Spiele- und Multimedia-Programmierung 8
M RGB-Bild in Graustufen-Bild umwandeln Spiele- und Multimedia-Programmierung 2
M Bild-Spiegelung mit Java! Spiele- und Multimedia-Programmierung 5
S Bild auf Bild = Nichts? Spiele- und Multimedia-Programmierung 3
S Bild in Speicherbild zeichnen = Nichts? Spiele- und Multimedia-Programmierung 3
N Bild im Panel ändern Spiele- und Multimedia-Programmierung 3
D nicht 4-eckiges bild auf Hintergrund bewegen Spiele- und Multimedia-Programmierung 2
J Bild generieren Spiele- und Multimedia-Programmierung 5
K Java2d Bild als JPG oder so speichern Spiele- und Multimedia-Programmierung 10
G Slick2D SpriteSheet drehen in kuckrichtung Spiele- und Multimedia-Programmierung 1
M Kann nur nach rechts drehen Spiele- und Multimedia-Programmierung 7
Androbin mehr-dimensionale(n) Array(s) "drehen" Spiele- und Multimedia-Programmierung 8
A AffineTransform: Nach Drehen verschieben Spiele- und Multimedia-Programmierung 2
Creylon [LWJGL] 2D Sprite Rotieren/Drehen Spiele- und Multimedia-Programmierung 6
E [LWJGL] Karusell, mehrere Objekte drehen sich um einen Mittelpunkt Spiele- und Multimedia-Programmierung 31
R Drehen eines Bildes relativ zur Mauszeigerposition Spiele- und Multimedia-Programmierung 2
A Drehen von einem Image Spiele- und Multimedia-Programmierung 4
CookieSoft 3D Würfel will sich nicht drehen! [LWJGL] Spiele- und Multimedia-Programmierung 2
T JOGL 2D Objekte drehen rotate Spiele- und Multimedia-Programmierung 4
F 2D Shooter (von oben) Kugelberechnung und drehen der Figur Spiele- und Multimedia-Programmierung 17
R Koordinaten, Breite, Höhe nach drehen berechnen? Spiele- und Multimedia-Programmierung 3
S Drehen nur um x-Achse Spiele- und Multimedia-Programmierung 5
T [java3d] Figur drehen Spiele- und Multimedia-Programmierung 16
B vertikal schreiben oder eine Bilddatei drehen? Spiele- und Multimedia-Programmierung 11
A "Textur-Achse" drehen. Spiele- und Multimedia-Programmierung 2
M um eigene Achse drehen Spiele- und Multimedia-Programmierung 3
B Bounds drehen sich nicht mit.... Spiele- und Multimedia-Programmierung 7
P Rechteck drehen Spiele- und Multimedia-Programmierung 3
N Rundenstrategiespiel - Problem beim Drehen eines Bildes Spiele- und Multimedia-Programmierung 18
Z Obejkt drehen & vorwärts bewegen Spiele- und Multimedia-Programmierung 9
K Bilder drehen Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen


Oben