Graphics 2D Zeichnen

Status
Nicht offen für weitere Antworten.

Chris82KS

Mitglied
Hi!

Ich bin gerade daran einen Java 2D Grafik Editor zu programmieren. Habe aber Probleme mit dem Zeichnen. Und zwar habe ich ein leeres Image auf einem Label erzeugt. Also ein ImageIcon. Dann erstelle ich aus dem Label ein Graphics2D Kontext. Und in dem zeichne ich. Ist auch alles wunderbar sichtbar, aber mein Problem ist, dass wennn ich das Frame vergrößere, wo das Label drin ist, alles gezeichnete wieder weg ist. Wie kann ich das beibehalten? Hier mal der Quelltext:

Code:
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;

import javax.swing.JLabel;

public class DrawEngine {

	private TestUmgebung myTest;

	public DrawEngine(TestUmgebung test) {
		myTest = test;
	}

	public void drawingPixels(JLabel label, int x, int y) {

		double valueX = (double) x;
		double valueY = (double) y;

		Graphics2D g = (Graphics2D) label.getGraphics();
		g.setPaint(Color.BLUE);
		g.draw(new Line2D.Double(valueX, valueY, valueX, valueY));
	}
}

Hier die MouseMotion Funktion die die drawingPixels aufruft:

Code:
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JLabel;

public class Mousy implements MouseMotionListener {

	private JLabel content;
	private DrawEngine myEngine;

	public Mousy(JLabel label, DrawEngine engine1) {
		content = label;
		myEngine = engine1;
	}

	public void mouseDragged(MouseEvent me) {
		int x = me.getX();
		int y = me.getY();
		myEngine.drawingPixels(content, x, y);
		
	}

	public void mouseMoved(MouseEvent arg0) {
	}

}

Und hier noch die Hauptklasse:
Code:
import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;

public class TestUmgebung extends JFrame {

	private BufferedImage theImage;

	private DrawEngine engine;

	private JLabel screen;

	public TestUmgebung() {

		engine = new DrawEngine(this);

		theImage = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB);
		Graphics2D g = theImage.createGraphics();
		g.setColor(Color.WHITE);
		g.fillRect(0, 0, 400, 400);

		ImageIcon icon = new ImageIcon(theImage);

		screen = new JLabel(icon, JLabel.CENTER);
		screen.addMouseMotionListener(new Mousy(screen, engine));

		getContentPane().add(screen);
		setSize(400, 400);
		setVisible(true);
	}

	public static void main(String[] args) {
		TestUmgebung tu = new TestUmgebung();
	}
}

Wäre für Hilfe echt dankbar.

Gruß
Chris
 

Chris82KS

Mitglied
Danke, aber irgendwie kriege ich es nicht geacken. Gibt es irgendwo nen exaktes Beispiel, wo mal einer so was auf nem JLabel oder so gezeichnet hat, oder kann mir konkret bei meinem Problem helfen?
Meinen Source-Code gibt es unter www.uni-kassel.de/~chmielke

Gruß
Chris
 

Chris82KS

Mitglied
Nicht schlecht das Tutorial. Leider hat es mir noch nicht ganz zu dem gewünschten Erfolg verholfen.
Der Code sieht jetzt folgendermaßen aus. Ich habe eine Klasse von JComponent abgeleitet und will in der überschriebenen Methode paintComponent zeichnen, doch das klappt immer noch nicht. Was ist jetzt falsch? Hier mal der Code jetzt:

Code:
package testumgebung;

import javax.swing.JFrame;

public class TestUmgebung extends JFrame {

	
	private MyLabel screen;
	private Mousy mouse1;	
	
	public TestUmgebung() {
		
		setSize(400, 400);
		screen = new MyLabel(this);
		mouse1= new Mousy(screen, this);
		screen.addMouseMotionListener(mouse1);
				
		getContentPane().add(screen);
		setVisible(true);
	}

	public static void main(String[] args) {
		TestUmgebung tu = new TestUmgebung();
	}
}

Code:
package testumgebung;

import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

public class Mousy implements MouseMotionListener{

	private MyLabel content;
	private Point firstPoint;
	private Point lastPoint;
	
	private TestUmgebung parent;
	
	
	public Mousy(MyLabel label, TestUmgebung umgebung) {
		parent = umgebung;
		content = label;
		firstPoint = new Point();
		lastPoint = new Point();
		
	}

	public void mouseDragged(MouseEvent me) {
		
		firstPoint = me.getPoint();
		
		if (lastPoint.x == 0) {
			lastPoint.x=firstPoint.x;
			lastPoint.y=firstPoint.y;
			content.setP1(firstPoint);
			content.setP2(lastPoint);			
			lastPoint.x = firstPoint.x;
			lastPoint.y = firstPoint.y;
				
			
		}else {
			content.setP1(firstPoint);
			content.setP2(lastPoint);
			lastPoint.x = firstPoint.x;
			lastPoint.y = firstPoint.y;			
		}
	}
	
	public Point getP1() {
		return firstPoint;
	}
	
	public Point getP2() {
		return lastPoint;
	}

	public void mouseMoved(MouseEvent me) {
	}

}

Code:
package testumgebung;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;

import javax.swing.Icon;
import javax.swing.JComponent;


public class MyLabel extends JComponent {
	
	private Icon image;
	private TestUmgebung parent;	
	
	private Point p1;
	private Point p2;
			
	public MyLabel (TestUmgebung test) {
		p1 = new Point();
		p2 = new Point();
		parent = test;
		setDoubleBuffered(true);
		setOpaque(true);		
	}
	
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		//g.setColor(Color.WHITE);
		//g.fillRect(0, 0, parent.getWidth(), parent.getHeight());
		
		//if (p1.x != 0){
			g.setColor(Color.BLUE);
			g.drawLine(this.p1.x, this.p1.y, this.p2.x, this.p2.y);
		//}
	}
	
	public void setP1(Point p) {
		this.p1 = p;
	}
	
	public void setP2(Point p) {
		this.p2 = p;
	}
	
}

Vielleicht kann mir ja nochmal jemand helfen und mir sagen warum es nicht geht, oder wie ich es besser mache. Viele sage ich nochmal kurz was ich hier überhaupt vorhabe: Ich will praktisch die "Stift-Funktion" eines Zeichenprgramms implementiereren. Also wenn ich mit gedrückter Maustaste über das Ding fahre, dass dann gezeichnet wird.

Gruß
Chris
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F einzelne Polygone(Graphics) schneller als and. Fig. zeichnen Spiele- und Multimedia-Programmierung 3
K Hashmap mit 2D Graphics Spiele- und Multimedia-Programmierung 7
FunnyO Graphics fillOval weiche Kanten Spiele- und Multimedia-Programmierung 8
kaoZ Graphics Objekt liefert null Spiele- und Multimedia-Programmierung 14
S Graphics Objekt weiterreichen? Spiele- und Multimedia-Programmierung 4
Steev Eigener Graphics-Context Spiele- und Multimedia-Programmierung 10
S Graphics.drawString (Graphics2D.drawString) Y-Problem Spiele- und Multimedia-Programmierung 4
G Wie bekomme ich einen Punkt (Graphics) Spiele- und Multimedia-Programmierung 2
K stringWidth bei Graphics von JPanel und Printer unterschiedl Spiele- und Multimedia-Programmierung 4
P Graphics Klasse Spiele- und Multimedia-Programmierung 3
N Performance Problem bei mit Graphics Spiele- und Multimedia-Programmierung 6
V Graphics oder Graphics2D Zeichenfunktion gesucht? Spiele- und Multimedia-Programmierung 4
G Einen gif oder jpg Datei aus einem Graphics Objekt o. JFrame Spiele- und Multimedia-Programmierung 2
O transparente farbe in Image mit Graphics Spiele- und Multimedia-Programmierung 8
G Graphics bei Java aufteilen Spiele- und Multimedia-Programmierung 3
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
SaftigMelo Kreissegment zeichnen Spiele- und Multimedia-Programmierung 2
E Buttons neu zeichnen im GridLayout Spiele- und Multimedia-Programmierung 2
A Zeichnen außerhalb der paint-Methode Spiele- und Multimedia-Programmierung 6
E Isometrische Tiles mit unterschiedlicher Größe an korrekter Position zeichnen Spiele- und Multimedia-Programmierung 1
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
J Int Wert auf JFrame zeichnen Spiele- und Multimedia-Programmierung 3
H [ANIMATION] Hintergrundbild nur einmal zeichnen Spiele- und Multimedia-Programmierung 3
R [lwjgl] Cursor -> versetzt Zeichnen / Bild ist umgedreht Spiele- und Multimedia-Programmierung 2
M Methoden eine Map zu zeichnen Spiele- und Multimedia-Programmierung 5
aze Nicht rechteckiges Bild zeichnen Spiele- und Multimedia-Programmierung 5
F nur Ausschnitt eines Image zeichnen Spiele- und Multimedia-Programmierung 9
T 3D Graphen Zeichnen Spiele- und Multimedia-Programmierung 19
F Kurven zeichnen Spiele- und Multimedia-Programmierung 2
E Keine Werte zum Zeichnen werden Übergeben Spiele- und Multimedia-Programmierung 3
A Halbkreise zeichnen lassen? Spiele- und Multimedia-Programmierung 2
F Lineal mit Zahlen zeichnen Spiele- und Multimedia-Programmierung 7
N Linie mit Rand zeichnen Spiele- und Multimedia-Programmierung 10
A Mehrere geometrische Objekte in JPanel zeichnen Spiele- und Multimedia-Programmierung 4
A Optimiertes Zeichnen - wie? Spiele- und Multimedia-Programmierung 8
data89 Koordinaten in Koordinatensystem zeichnen Spiele- und Multimedia-Programmierung 11
M Binärbaum ohne Überlappung zeichnen Spiele- und Multimedia-Programmierung 3
H Decke zeichnen mit Hilfe eines Polygons Spiele- und Multimedia-Programmierung 2
B 1)JButtons zeichnen 2)Kolisionsabfrage von zwei Objekten Spiele- und Multimedia-Programmierung 9
G Linie im Applet zeichnen Spiele- und Multimedia-Programmierung 5
G Schüsse zeichnen, Fehler? Spiele- und Multimedia-Programmierung 3
S Dreieck zeichnen Spiele- und Multimedia-Programmierung 9
G Überlagern von Strings beim zeichnen verhindern Spiele- und Multimedia-Programmierung 3
C Objekt bei Buttonklick zeichnen Spiele- und Multimedia-Programmierung 16
G Geschwungene Klammer zeichnen Spiele- und Multimedia-Programmierung 5
F Neu zeichnen verhindern Spiele- und Multimedia-Programmierung 25
J Zeichnen in BufferedImage und dieses in Datei speichern Spiele- und Multimedia-Programmierung 2
O Funktion zeichnen Spiele- und Multimedia-Programmierung 11
A Lissajous Figuren zeichnen Spiele- und Multimedia-Programmierung 1
G Maus springt --> Free-Hand-Zeichnen Spiele- und Multimedia-Programmierung 2
L Schüsse zeichnen Spiele- und Multimedia-Programmierung 13
M Eigene Strings zeichnen Spiele- und Multimedia-Programmierung 4
T Blitz berechnen und zeichnen Spiele- und Multimedia-Programmierung 13
M auswahlkreis zeichnen (schräg) Spiele- und Multimedia-Programmierung 4
N Logik: Grenz-/Frontlinie zeichnen Spiele- und Multimedia-Programmierung 4
M Grafikprogramm, zeichnen mit Maus Spiele- und Multimedia-Programmierung 7
G Problem beim Zeichnen von LineArrays Spiele- und Multimedia-Programmierung 9
P linie in bild zeichnen Spiele- und Multimedia-Programmierung 2
G Auf 3D Box zeichnen Spiele- und Multimedia-Programmierung 4
K mit Canvas übereinander zeichnen Spiele- und Multimedia-Programmierung 4
G 3D Raum zeichnen Spiele- und Multimedia-Programmierung 7
H Kreis zeichnen mittels Schleife & drawLine Spiele- und Multimedia-Programmierung 4
B Probleme beim zeichnen Spiele- und Multimedia-Programmierung 15
N Bild zu zeichnen (drawImage) klappt nur manchmal?? Spiele- und Multimedia-Programmierung 8
T Effizient zeichnen Spiele- und Multimedia-Programmierung 12
H mit Java2D Markierung über JTable zeichnen und diese bewegen Spiele- und Multimedia-Programmierung 2
C Graphische Benutzerschnittstelle, Problem beim Zeichnen Spiele- und Multimedia-Programmierung 4
J schnellste alternative um in java zu "zeichnen" Spiele- und Multimedia-Programmierung 17
conan2 Objekte in richtiger Z-Reihenfolge zeichnen Spiele- und Multimedia-Programmierung 2
G Punkte in Java3D zeichnen Spiele- und Multimedia-Programmierung 2
S Pixel zeichnen Spiele- und Multimedia-Programmierung 3
S Bild in Speicherbild zeichnen = Nichts? Spiele- und Multimedia-Programmierung 3
G Farbig zeichnen ohne java.awt.Color? Spiele- und Multimedia-Programmierung 5
S Wie kann ich das Zeichnen der Grafik feiner machen? Spiele- und Multimedia-Programmierung 9
M Wie kann man Kreisringe zeichnen ? Spiele- und Multimedia-Programmierung 12
R Kreuz lässt sich nicht zeichnen Spiele- und Multimedia-Programmierung 11
K Kugeln und Zylinder zeichnen Spiele- und Multimedia-Programmierung 4
L ein Rechteck zeichnen Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen

Neue Themen


Oben