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:
Hier die MouseMotion Funktion die die drawingPixels aufruft:
Und hier noch die Hauptklasse:
Wäre für Hilfe echt dankbar.
Gruß
Chris
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