Bild drehen

Status
Nicht offen für weitere Antworten.
B

bygones

Gast
:applaus: :applaus: :applaus: :applaus: :applaus:
dreh mal was im 360 Grad winkel :wink:
 
M

macfreakz

Gast
Code:
public static AffineTransform getRotateInstance(double theta)

das wärs! :)
 

raven

Bekanntes Mitglied
das wars schon die kleine Zeile und wo muss ich dann meien Bilder, also animiert abspielen lassen das das wie gedreht wirkt
 

Kerberus

Bekanntes Mitglied
Du erzeugst ein neues AffineTransform - Objekt. Mit diesem kannst du das Koordinaten-System drehen, d.h du drehst nicht das Bild sondern eigentlich die "Zeichenfläche".
Code:
import java.awt.geom.*;
...
AffineTransform aft = new AffineTransform();
aft.rotate(double theta, double x, double y);
/**
*double theta repräsentiert den winkel um welchen gedreht wird
*double (x/y) der Punkt um welchen gedreht werden soll
**/
...

Eigentlich kannst du nun, um eine Animation zu erstellen, einfach den Winkel theta verändern und dann repaint() aufrufen.
 

raven

Bekanntes Mitglied
Meine Animation wo kommt die rein.
und das repaint() muss ich in der
Methode: public static AffineTransform getRotateInstance(double theta) aufrufen.
Oder?
 

Kerberus

Bekanntes Mitglied
Ok, das heisst, dass du eine paint()-Methode hast.
Wenn du eine Animation machst, dann implementierst du wohl das Runnable-Interface. Das heisst, dass du eine run()-Methode hast, in welcher du eine while(true)-Schleife hast und welche du mit Thread.sleep(int milis) schlafen legst. In dieser Methode rufst du eine Methode auf :) die den Winkel Theta verändert. Dann rufst du repaint() auf.

Code:
double theta = 0;
//global definieren

private void rotateImage(){
 theta++;
}

public void paint(Graphics g){
 AffineTransform aft = new AffineTransform();
 aft.rotate(Math.toRadians(theta), double x, double y);

 ...
}

public void run(){
 while(true){
  this.rotateImage();
  try{
   Thread.sleep(int milis);
  }
   ....
}
 

raven

Bekanntes Mitglied
So jetzt habe ich das so wie du es geschrieben hast eingebaut am anfang kamen zwar 8 Fehler die konnte ich bis zu 2 Fehlern reduzieren.

bei denen weiß ich aber nicht was da falsch sein soll:

Main.java:45: '.class' expected
aft.rotate(Math.toRadians(theta), double x, double y);
^
Main.java:45: ')' expected
aft.rotate(Math.toRadians(theta), double x, double y);
^



Und das ist bis jetzt mein quelltext aber noch ohne Animation:

Code:
import java.applet.*;						// Import befehle
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.awt.geom.*;

public class Main extends Applet implements Runnable
{
	Thread t;
	boolean bWeiter=true;

	double theta = 0;
	int milies=10;

	public void init ()						
	{

	}
	public void start()
	{
		t = new Thread(this);
		t.start();
	}
	public void stopp()
	{
		bWeiter=false;
	}
	public void run()						
	{
		while (bWeiter)
		{
			this.rotateImage();
			try { t.sleep(milies);}
			catch (Exception e) { }
			repaint();
		}
	}
	private void rotateImage(){
 		theta++;
 	}
	public void paint(Graphics g){
 		AffineTransform aft = new AffineTransform();
 		aft.rotate(Math.toRadians(theta), double x, double y);
	}
}
 

Kerberus

Bekanntes Mitglied
Ok, erstens solltest du noch x und y definieren, damit das Programm weiss, um was es drehen muss. Dann habe ich noch eine Methode vergessen.
Code:
AffineTransform aft = new AffineTransform();
aft.rotate(theta, x, y);
g.setTransform(aft);
Jetzt sollte es eigentlich gehen.
 

raven

Bekanntes Mitglied
So jetzt habe ich nur noch einen Fehler:


Main.java:51: cannot resolve symbol
symbol : method setTransform (java.awt.geom.AffineTransform)
location: class java.awt.Graphics
g.setTransform(aft);
^
1 error


Für was ist das "g.setTransform(aft);" gut, was macht das.

Und noch was dreht sich dann automatisch alles oder muss ich dann die x und y Variable bvei meiner Animation reinsetzten.
 

Kerberus

Bekanntes Mitglied
Ok, dann musst du das Graphics-Object zuerst noch in ein Graphics2D casten.
Füge einfach am Anfang der paint()-Methode folgende Zeile ein:
Code:
Graphics2D g2d = (Graphics2D) g;

Im weiteren Code musst du dann aber g2d verwenden anstelle von g.
Konkret:
Code:
g2d.setTransform(aft);

Das AffineTransform-Objekt beinhaltet, soweit ich weiss, die Informationen, welche benötigt werde, um das KoordinatenSystem zu drehen. Jedoch erst, wenn du setTransform() aufrufst, werden dies angewendet.

Hab dir mal den Quellcode kompletiert. Anstelle eines Bildes habe ich allerdings ein Rechteck genommen. x und y verweisen auf die Mitte des Rechteckes.
Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.awt.geom.*;

public class Main extends Applet implements Runnable
{
 Thread t;
 boolean bWeiter = true;

 double theta = 0;
 int milis = 25;

 double x = 150;
 double y = 150;

 public void init()
 {
 }

 public void start()
 {
  t = new Thread(this);
  t.start();
 }

 public void stopp()
 {
  bWeiter = false;
 }

 public void run()
 {
  while(bWeiter)
  {
   this.rotateImage();
   repaint();
   try
   {
    t.sleep(milis);
   }
   catch(InterruptedException e)
   {
   }
  }
 }

 private void rotateImage()
 {
  theta++;
 }

 public void paint(Graphics g)
 {
  Graphics2D g2d = (Graphics2D) g;
  AffineTransform aft = new AffineTransform();
  aft.rotate(Math.toRadians(theta), x, y);
  g2d.setTransform(aft);

  g2d.setColor(new Color(255,0,0));
  g2d.drawRect(100,100,100,100);
 }
}
 

raven

Bekanntes Mitglied
Jetzt ist noch ein neuer Fehler aufgetaucht.

Main.java:52: illegal character: \160
g2d.drawLine(100,100,100,100);
^
1 error
 

raven

Bekanntes Mitglied
So das is er.


Code:
import java.applet.*;						
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.awt.geom.*;


public class Main extends Applet implements Runnable
{
	Thread t;
	boolean bWeiter=true;

//	Fly F1 = new Fly();

	double theta = 0;
	double x = 150;
	double y = 150;
	int milies=10;

	public void init ()						
	{

	}
	public void start()
	{
		t = new Thread(this);
		t.start();
	}
	public void stopp()
	{
		bWeiter=false;
	}
	public void run()						
	{
		while (bWeiter)
		{
			this.rotateImage();
			try { t.sleep(milies);}
			catch (Exception e) { }
			repaint();
		}
	}
	private void rotateImage(){
 		theta++;
 	}
	public void paint(Graphics g){
		Graphics2D g2d = (Graphics2D) g;
		AffineTransform aft = new AffineTransform();
		aft.rotate(theta, x, y);
 		g2d.setTransform(aft);

   		g2d.drawRect(100,100,100,100);
	}
}
 

Kerberus

Bekanntes Mitglied
Ne, das weisst darauf hin, dass er einen Tab verwenden hat, oder so was. Habe ich auch immer, wenn ich Code aus dem Forum verwende und es direkt kompilieren möchte. Geh zur betroffenen Zeile und lösche alle Zeichen vor dem eigentlichen Code und erzeuge den benötigten Abstand mit Leerzeichen, dann sollte es gehen.
 

raven

Bekanntes Mitglied
Na endlich keine Fehler mehr.

Ein klitze kleines Problem noch.

Er zeigt nichts an ob wohl ich ein viereck gezeichnet habe.
 

Kerberus

Bekanntes Mitglied
Du musst wohl noch die Farbe von weiss auf irgendetwas anderes stellen, denn weiss auf weiss sieht man bekanntlich nicht so gut :)

Code:
g2d.setColor(new Color(100,100,100)); //Beliebige RGB-Werte einzetzen
 
M

macfreakz

Gast
@X-Master: Ich muss dir was ehrlich sagen: ich finde deine Postings wirklich blöd ... du hättest Java doch von anfang an zu lernen und nicht gleich am Ende oder mittendrin! Ich sehe, du hast wirklich null Ahnung über Java und versuchst nur, die Code zu kopieren. Die bei dir auftretenen Probleme können doch jeder lösen, der schon Java Grundlagen hat! Zum Glück hat Kerberus Lust, dir 100 % zu helfen ... :bloed:

Jetzt zu deinem Problem: du wirst merken, dass das Fenster stark ruckeln wird. Du musst eine spezielle Zeichnen-Technik anwenden, sie heisst "DoubleBuffering". Mehr darüber benutze die Suchfunktion hier ... viel Spass ... (ich empfehle dir, vorher zuerst die Java Grundlagen zu lernen ... )

@Kerberus: sehr lieb, wie du X-Master geholfen hast! In dieser Weise sollst du beim näcshten Mal nicht machen, gell?
 

raven

Bekanntes Mitglied
Ich habe keine null Ahnung von Java ich besitzte zwar noch nicht alle Grundlage, aber sag mer mal die hälfte davon.

Ich hab sowas mit Bildern drehen bloß noch nie gemacht und in tutiorals und Büchern habe ich nich nie so eas gesehen wie die das beschreiben.

und noch was wozu ist denn das Forum da damit man Probleme lössen kann.

So das mit dem drehen funktioniert jetzt.
 
M

macfreakz

Gast
@X_Master: 1/2 Grundlagen hast du im Kopf? Ich kann kaum fassen ... wie du über dich selbst so beurteilen kannst.

Diese Zeile sagt schon viel aus:

Code:
aft.rotate(Math.toRadians(theta), double x, double y);

Jede Java Anfänger hätte diese Zeile sofort korrigieren können!!!
Nimm Javabuch und lerne nochmals von vorne an ... [/code]
 

Illuvatar

Top Contributor
macfreakz hat gesagt.:
@X-Master: Ich muss dir was ehrlich sagen: ich finde deine Postings wirklich blöd ... du hättest Java doch von anfang an zu lernen und nicht gleich am Ende oder mittendrin! Ich sehe, du hast wirklich null Ahnung über Java und versuchst nur, die Code zu kopieren. Die bei dir auftretenen Probleme können doch jeder lösen, der schon Java Grundlagen hat! Zum Glück hat Kerberus Lust, dir 100 % zu helfen ... :bloed:

Jetzt zu deinem Problem: du wirst merken, dass das Fenster stark ruckeln wird. Du musst eine spezielle Zeichnen-Technik anwenden, sie heisst "DoubleBuffering". Mehr darüber benutze die Suchfunktion hier ... viel Spass ... (ich empfehle dir, vorher zuerst die Java Grundlagen zu lernen ... )

@Kerberus: sehr lieb, wie du X-Master geholfen hast! In dieser Weise sollst du beim näcshten Mal nicht machen, gell?

macfreakz hat gesagt.:
@X_Master: 1/2 Grundlagen hast du im Kopf? Ich kann kaum fassen ... wie du über dich selbst so beurteilen kannst.

Diese Zeile sagt schon viel aus:

Code:
aft.rotate(Math.toRadians(theta), double x, double y);

Jede Java Anfänger hätte diese Zeile sofort korrigieren können!!!
Nimm Javabuch und lerne nochmals von vorne an ... [/code]

Halte dich bitte in Zukunft mit solchen Aussagen zurück. :noe:
 
G

Guest

Gast
Edit by Illuvatar: Hier stand das Geflame eines Gastes (jedenfalls haben die IPs weder auf Xmaster noch auf sonstwen aus dem Forum gepasst) gegen macfreakz.
Ich habe diese Sache damals schon per pn mit Macfreakz geklärt.
Wenn du noch weiter sachlich darüber reden willst, wende dich per pn an mich, einen anderen Mod oder Admin, oder direkt an macfreakz selbst.
 
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
P 2D Bild drehen Spiele- und Multimedia-Programmierung 4
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

Neue Themen


Oben