ruckelfreie animation

Status
Nicht offen für weitere Antworten.
R

reto

Gast
hallo,
also ich hab ein problem ich will ein programm schreiben zur simulation der bewegung von probleladungen im E-Feld
das klappt alles schon ganz gut nur wenn ich die bewegung anzeig dann is das ganze ziemlich ruckelig
ich hab dafür einen thread der durch
Code:
Thread.sleep(100)
; immer ne zehntelsekunde warten soll bis er die neue position zeichnet. aber iwie hab ich das gefühl er braucht länger als ne zehntelsekunde um neu zu zeichnen. kann mir da jemand helfen.

und ich hab noch ne andere frage. gibts ne möglichkeit mit Graphics2d koordinaten in double anzugeben (also nicht einfach runden sondern genau zeichnen)?
 

Wolfgang Lenhard

Bekanntes Mitglied
Hi,
die Schwelle der visuellen Wahrnehmung liegt ca. bei 60 ms, die sog. Flimmerfusionsfrequenz eher bei 30 ms. Wenn es ruckelfrei sein soll, dann musst Du eher 20 bis 30 ms anpeilen.

Ciao,
Wolfgang
 
G

Guest

Gast
ok also ich hab jetzt festgestellt das meine paint methode wohl einfach ein bisschen zu aufwendig ist weil sie jedes mal ein komplettes koordinatensystem zeichnet:
Code:
		for (int i=0;i<=g2.getClip().getBounds().width/2;i=i+20){
			g2.drawLine(i, -g2.getClip().getBounds().height/2, i, g2.getClip().getBounds().height/2);
		}
		for (int i=-0;i>=-g2.getClip().getBounds().width/2;i=i-20){
			g2.drawLine(i, -g2.getClip().getBounds().height/2, i, g2.getClip().getBounds().height/2);
		}
		for (int i=0;i<=g2.getClip().getBounds().height/2;i=i+20){
			g2.drawLine(-g2.getClip().getBounds().width/2,i ,g2.getClip().getBounds().width/2, i );
		}
		for (int i=0;i>=-g2.getClip().getBounds().height/2;i=i-20){
			g2.drawLine(-g2.getClip().getBounds().width/2,i ,g2.getClip().getBounds().width/2, i );
		}
wie könnte man das vereinfachen. ich hab mir gedacht dass ich zb das koordinatensystem auf einem jframe zeichne und die animation auf einem durchsichtigen jcomponent.
ist das möglich? wenn ja wie?
vielen dank für die hilfe
 

The_S

Top Contributor
Du kannst dir auch einfach einmal am Anfang das Koordinatensystem auf ein BufferedImage erstellen und dann nur noch jedesmal dieses Image zeichnen und dann da drüber deine eigentliche Animation.
 

Quaxli

Top Contributor
Man sieht jetzt nicht wie groß Deine Zeichenfläche ist, aber eigentlich sollten die paar Linien Dein Programm nicht großartig ausbremsen. Poste doch mal ein bißchen mehr Code außen rum.
 
G

Guest

Gast
@Hobbit_Im_Blutrausch
ok danke das hab ich bis jetzt noch gar nich gekannt muss ich mir mal anschaun

@Quaxli
ok wird gemacht:
Code:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.util.concurrent.TimeUnit;

import javax.swing.JComponent;

public class DrawArea extends JComponent implements Runnable{

	private static final long serialVersionUID = -6380152373145151531L;
	
	int cnt=0;
	public void startAnimation()
	{
		Thread th = new Thread(this);
		th.start();
	}

	public void run()
	{
		while (true) {
			repaint();
			try {
				TimeUnit.MILLISECONDS.sleep(20);
				} catch (InterruptedException e) {
	            //nichts
				}
		}
	}
	
	  public void paint( Graphics g ) 
	  { 
		Graphics2D g2 = (Graphics2D) g; 
		g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
		g2.translate(g2.getClip().getBounds().width/2, g2.getClip().getBounds().height/2);
		g2.scale(0.7, 0.7);
		g2.setColor(Color.WHITE);
		g2.fill(g2.getClip());   //weisser Hintergrund
		g2.setColor(Color.black);	//Farbe wieder schwarz

		BasicStroke stroke = new BasicStroke( 1,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 1, new float[]{ 1 }, 1 );
		g2.setStroke(stroke);	//gestrichelte linie
		g2.setColor(Color.gray);//farbe graus
				
		
		for (int i=0;i<=g2.getClip().getBounds().width/2;i=i+20){
			g2.drawLine(i, -g2.getClip().getBounds().height/2, i, g2.getClip().getBounds().height/2);
		}
		for (int i=-0;i>=-g2.getClip().getBounds().width/2;i=i-20){
			g2.drawLine(i, -g2.getClip().getBounds().height/2, i, g2.getClip().getBounds().height/2);
		}
		for (int i=0;i<=g2.getClip().getBounds().height/2;i=i+20){
			g2.drawLine(-g2.getClip().getBounds().width/2,i ,g2.getClip().getBounds().width/2, i );
		}
		for (int i=0;i>=-g2.getClip().getBounds().height/2;i=i-20){
			g2.drawLine(-g2.getClip().getBounds().width/2,i ,g2.getClip().getBounds().width/2, i );
		}
		
		

		
    cnt=cnt+1;
    
    
    g2.drawOval(cnt, cnt, 10, 10);
 
	  } 
	}
Also hier bewegt sich jetzt nur ein kleiner punkt. das is erst zum ausprobieren von animationen. das wird dann alles noch aufwendiger :oops:
 
G

Guest

Gast
Sieht beim schnellen Düberschauen erstmal ok aus. Den Stroke erzeugst du allerdings bei jedem aufruf der PaintMethode neu, dass sollte du da rausziehen.
 
R

reto

Gast
ok das problem scheint wirklich das mit BasicStroke zu sein. sobald ich das auskommentier funktionierts wunderbar. aber wenn ichs nur ausserhalb von der paint-methode erzeuge bringt das nichts.
könnte mir vllt jemand erklären wie ich son BufferedImage erzeug und als hintergrund benutzen kann??
daaanke
 

The_S

Top Contributor
Code:
BufferedImage img = new BufferedImage(width, height, type);
Graphics2D g = img.createGraphics();
// Zeichenoperationen auf g
// fertig
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A 2D-Grafik Ruckelfreie Animation AWT, Swing, JavaFX & SWT 20
P Animation läuft nicht korrekt AWT, Swing, JavaFX & SWT 8
Ernesto95 JavaFX Return Value nach Beendigung einer Animation AWT, Swing, JavaFX & SWT 15
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
DeBoiJoshua 2D-Grafik Gif Animation will nicht laden AWT, Swing, JavaFX & SWT 1
S JavaFX WebView zeigt keine Animation AWT, Swing, JavaFX & SWT 5
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
L JavaFX Animation, erst zeichnen dann anzeigen AWT, Swing, JavaFX & SWT 4
L JavaFX Animation für Panel wechsel AWT, Swing, JavaFX & SWT 3
J Java FX Koordinaten NACH Animation setzen, wie? AWT, Swing, JavaFX & SWT 9
Pr0m3theus Animation nach Event AWT, Swing, JavaFX & SWT 6
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
javampir 2D-Grafik Effizienz bei animation AWT, Swing, JavaFX & SWT 0
C Pixel-Rendering/Animation Performance in BufferedImage AWT, Swing, JavaFX & SWT 1
wolfgang63 JavaFX Animation, Kreise im vorgegebem Takt durchs Fenster laufen lassen AWT, Swing, JavaFX & SWT 3
P Ansatz für 2D Animation gesucht AWT, Swing, JavaFX & SWT 2
Thallius HHübsche Kopier Animation? AWT, Swing, JavaFX & SWT 5
L JPanel kleine "Animation" AWT, Swing, JavaFX & SWT 7
E Animation läuft nicht mehr flüssig AWT, Swing, JavaFX & SWT 8
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
B 2D-Grafik Dynamisches Erstellen von Images und deren Animation AWT, Swing, JavaFX & SWT 4
R Swing Komponenten bleiben bei Animation unsichtbar AWT, Swing, JavaFX & SWT 7
J GIF Animation AWT, Swing, JavaFX & SWT 2
B Swing Thread+Animation AWT, Swing, JavaFX & SWT 7
R Swing Animation mit JLayeredPane? AWT, Swing, JavaFX & SWT 8
K 3D-Grafik Animation AWT, Swing, JavaFX & SWT 4
U Gif Animation mit JLabel AWT, Swing, JavaFX & SWT 3
P KeyListener + Animation AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Animation flackert AWT, Swing, JavaFX & SWT 8
R Polygon-Animation mit Darstellungsfehlern AWT, Swing, JavaFX & SWT 5
StupidAttack Animation, JComponent AWT, Swing, JavaFX & SWT 3
S SWT Rudimentäre Bild Animation AWT, Swing, JavaFX & SWT 3
C Animation auf einem JPanel AWT, Swing, JavaFX & SWT 3
A paintComponent() - Animation AWT, Swing, JavaFX & SWT 2
S Ich brauche eine Idee: Animation mit teil eines Bildes AWT, Swing, JavaFX & SWT 16
H "Animation" AWT, Swing, JavaFX & SWT 2
S Animation korrekt darstellen AWT, Swing, JavaFX & SWT 8
Developer_X Nach Animation Button adden AWT, Swing, JavaFX & SWT 3
Developer_X Swing JPanel-THE ANIMATION AWT, Swing, JavaFX & SWT 3
T JFrame und Scale-Animation AWT, Swing, JavaFX & SWT 8
M Animation berechnen AWT, Swing, JavaFX & SWT 4
M Animation auf JPanel per Knopfdruck AWT, Swing, JavaFX & SWT 12
P Problem bei Animation AWT, Swing, JavaFX & SWT 2
K Animation auf GUI AWT, Swing, JavaFX & SWT 3
T Animation will nicht trotz Thread. AWT, Swing, JavaFX & SWT 14
S animation Flackern trotz doppelpufferung wieso? AWT, Swing, JavaFX & SWT 2
S Animation geht nicht AWT, Swing, JavaFX & SWT 3
m@nu Animation in GlassPane: Performanceeinbruch JFrame maximiert AWT, Swing, JavaFX & SWT 17
rudi.schraml Animation von Robotern auf FactoryFloor - repaint()? AWT, Swing, JavaFX & SWT 7
J Animation - Runnable AWT, Swing, JavaFX & SWT 3
O Animation in einem JPanel AWT, Swing, JavaFX & SWT 2
H Animation startet nicht/ Thread AWT, Swing, JavaFX & SWT 6
N Animation nach einem bestimmten Ereignis starten lassen? AWT, Swing, JavaFX & SWT 4
A Problem mit Animation AWT, Swing, JavaFX & SWT 4
M Animation mit Keylistener AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben