Zeichnung drehen

Status
Nicht offen für weitere Antworten.
S

Stefan000

Gast
Dies soll eine Rakete darstellen: ein Dreieck , wessen spitzer winkel nach oben zeigt ,
an den unteren beiden ecken ist ein rechteck , mit den längern seiten nach unten zeigend.

Code:
 public void paint(Graphics g)
       {
       	final SpaceObject spacecraft = new SpaceObject();
       	int x;
       	int y;
       	
        x=(int)spacecraft.x;
        y=(int)spacecraft.y;
       
       	
       	g.drawLine(x,y,x+10,y+10);    // Koordinate:  (x,y,x+20,y+20)                  /*
       	g.drawLine(x,y,x-10,y+10);    //              (x,y,x-20,y+20)                   * Dreieck ( spitze raumschiff )
       	g.drawLine(x+10,y+10,x-10,y+10);    //              (x+20,y+20,x-20,y+20)       */  
       	g.drawLine(x+10,y+10,x+10,y+40);    //        *
       	g.drawLine(x-10,y+10,x-10,y+40);   //         * unteres Viereck.
       	g.drawLine(x-10,y+40,x+10,y+40);   //         *  
        
       	
       }


Die Linien , die gezeichnet werden , beziehen sich alle auf die Koordinaten "x" Und "y". , sodass das Raumschiff
immer an der neuen Stelle gezeichnet wird wenn sich x,y ändern.

Mein Problem ist aber , dass noch ein Winkel übergeben wird , der bestimmt ob das Raumschiff gerade steht oder schief.
(( wenn der winkel zb 90° dann ist dann zeigt die spitze nach rechts , bei 0° ist das raumschiff augerichtet,
spitze nach oben ))


Da ich noch Anfänger mit Java bin , habe ich überhaubt keine Ahnung wie ich das machen soll.

Natürlich könnte ich mit If´-Anwweißungen zu jedem winkel ein neues Raumschiff zeichnen , aber da gibt es bestimmt eine bessere möglichkeit.



Ich hoffe mir kann einer helfen ,
Danke
 
G

Gast

Gast
wo kann ich mir das anschauen ? xD


könnt ich dann sowas machen wie
[alpha ist der winkel]

rotate(double alpha)
{
Zeichnung vom Raumschiff.

}

?
 

anfänger15

Bekanntes Mitglied
hier mal ein beispiel was dann in etwa in der paintComponent methode stehen sollte
Code:
	Graphics2D g2 = (Graphics2D) g;
			

			

				int cx = getWidth() / 2;
				int cy = getHeight() / 2;
				int imageWidth = scaledBild.getWidth(this);
				int imageHeight = scaledBild.getHeight(this);
				int x_pos = -imageWidth / 2;
				int y_pos = -imageHeight / 2;
				g2.translate(cx, cy);
				g2.rotate(rotieren);
				g2.drawImage(scaledBild, x_pos, y_pos, this);
 
G

Gast

Gast
versteh ich nicht ^^
kann nur mit public void paint(Graphics g) linien zeichnen
Und wofür braucht man die ganzen variablen ?
 
G

Gast

Gast
-> wie wäre das denn in meinem beispiel ?
Zb um 180° gedreht ?
 
G

Gast

Gast
Code:
    public void paintComponent(Graphics g) 
    { 
      try{ 
        Graphics2D g2d = (Graphics2D) g; 
        if(ANTIANALISING) 
        { 
          RenderingHints qualityHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,  RenderingHints.VALUE_ANTIALIAS_ON); 
          qualityHints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); 
          g2d.setRenderingHints(qualityHints); 
        } 

        AffineTransform origXform = g2d.getTransform(); 
        AffineTransform newXform = (AffineTransform)(origXform.clone()); 
        //center of rotation is center of the panel 
        int xRot = this.getWidth()/2; 
        int yRot = this.getHeight()/2; 
        newXform.rotate(Math.toRadians(rotate), xRot, yRot); 
        g2d.setTransform(newXform); 
        //draw image centered in panel 
        super.paintComponent(g2d); 
        g2d.setTransform(origXform); 

      }catch(Exception ex) 
      { 
        ex.printStackTrace(System.out); 
      } 
    }
Wo wird denn da etwas gezeichnet ??
Ich möchte ja nur
das hier zeichnen lassen und mit dem winkel alpha der noch übergeben wird drehen können.

Code:
         final SpaceObject spacecraft = new SpaceObject(); 
          int x; 
          int y; 
           
        x=(int)spacecraft.x; 
        y=(int)spacecraft.y; 
        
           
          g.drawLine(x,y,x+10,y+10);    // Koordinate:  (x,y,x+20,y+20)                  /* 
          g.drawLine(x,y,x-10,y+10);    //              (x,y,x-20,y+20)                   * Dreieck ( spitze raumschiff ) 
          g.drawLine(x+10,y+10,x-10,y+10);    //              (x+20,y+20,x-20,y+20)       */  
          g.drawLine(x+10,y+10,x+10,y+40);    //        * 
          g.drawLine(x-10,y+10,x-10,y+40);   //         * unteres Viereck. 
          g.drawLine(x-10,y+40,x+10,y+40);   //
 

thE_29

Top Contributor
ich meinte das was in der paintMethode ist ;)

Du machst einfach das was in der paint Methode ist (also genau das was du rauskopiert hast)
Kannst ggf, den ANTIANLISING Abfrage raustun!

Aber ansonsten einfach auf dein g anwenden!
 

thE_29

Top Contributor
http://666kb.com/i/aoj78prwnexq6v8sy.jpg

Sowas?

Einfach bevor du zeichnest, schon die graphics drehen!

Code:
    JLabel label = new JLabel(){
      public void paint(Graphics g)
      {
        int x;
        int y;
        
        x=(int)10;
        y=(int)20;
        Graphics2D g2d = (Graphics2D)g;
        AffineTransform origXform = g2d.getTransform();
        AffineTransform newXform = (AffineTransform)(origXform.clone());
        //center of rotation is center of the panel
        int xRot = (x + 10)/2;
        int yRot = (y + 40)/2;
        newXform.rotate(Math.toRadians(180), xRot, yRot);
        g2d.setTransform(newXform); 

        
        g.drawLine(x,y,x+10,y+10);    // Koordinate:  (x,y,x+20,y+20)                  /*
        g.drawLine(x,y,x-10,y+10);    //              (x,y,x-20,y+20)                   * Dreieck ( spitze raumschiff )
        g.drawLine(x+10,y+10,x-10,y+10);    //              (x+20,y+20,x-20,y+20)       */ 
        g.drawLine(x+10,y+10,x+10,y+40);    //        *
        g.drawLine(x-10,y+10,x-10,y+40);   //         * unteres Viereck.
        g.drawLine(x-10,y+40,x+10,y+40);   //         * 
        
        
      }
    };

Beim rotX und rotY müssen die maximalWerte für die x und y Achse (länge und breite) angegeben werden! Sonst rotiert er irgendwo und du siehst gar nüschts!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Zeichnung in Container Java Basics - Anfänger-Themen 8
J Java Array Zeichnung Skalieren und verschieben Java Basics - Anfänger-Themen 5
E Java Canvas Zeichnung Java Basics - Anfänger-Themen 2
S Über Button Zeichnung ändern Java Basics - Anfänger-Themen 5
J OOP GUI mit JTable und Zeichnung Java Basics - Anfänger-Themen 3
S Zeichnung der GUI kontrollieren Java Basics - Anfänger-Themen 9
R Zeichnung entfernen und neue Zeichnen lassen Java Basics - Anfänger-Themen 20
F Zeichnung verschwindet hinter Bild Java Basics - Anfänger-Themen 2
D Programm für Widestandsberechnung mit Zeichnung Java Basics - Anfänger-Themen 25
L zeichnung verschwindet nach komponenteneinfügung Java Basics - Anfänger-Themen 20
B Zeichnung auf dem Applet verschwindet Java Basics - Anfänger-Themen 13
R BorderLayout macht meine Zeichnung kaputt Java Basics - Anfänger-Themen 14
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
N Bild drehen Java Basics - Anfänger-Themen 3
R Java ImageIcon drehen Java Basics - Anfänger-Themen 6
R Image drehen Java Basics - Anfänger-Themen 1
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
I String um 90 Grad drehen Java Basics - Anfänger-Themen 17
B Erste Schritte Drehen in Graphics2d Java Basics - Anfänger-Themen 2
K Quadratische Matrix um 90° drehen Java Basics - Anfänger-Themen 5
P Vektor im R3 drehen? Java Basics - Anfänger-Themen 14
O BufferedImage drehen, falsch positioniert Java Basics - Anfänger-Themen 5
A Array drehen Java Basics - Anfänger-Themen 2
S Drehen RGB Würfel Java Basics - Anfänger-Themen 18
G Shape um eigene Achse drehen Java Basics - Anfänger-Themen 2
L Array drehen Java Basics - Anfänger-Themen 8
S Drehen eines Pfeils im Flug Java Basics - Anfänger-Themen 10
F Bild drehen Java Basics - Anfänger-Themen 9
A Javaspiel im Handy mit Drehen Java Basics - Anfänger-Themen 12
A Grafik2d Objekte drehen, Idee da, Problem in Umsetzung Java Basics - Anfänger-Themen 3
A Denkanstoß: Drehen eines Bildes (Matrix) Java Basics - Anfänger-Themen 5
S JPG drehen, skalieren und speichern Java Basics - Anfänger-Themen 15
D Image drehen Java Basics - Anfänger-Themen 6
H Drehen von Label Java Basics - Anfänger-Themen 2
R 2dimensionales array um 90 grad drehen Java Basics - Anfänger-Themen 2
T Bild drehen + richtige größe berechnen Java Basics - Anfänger-Themen 4
J Kann man ein JFrame/JWindow 90/-90 drehen? Java Basics - Anfänger-Themen 9
B array drehen Java Basics - Anfänger-Themen 11
G Aufgabe rekursiv Zahlen drehen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben