Moin!!
Hey ich bräuchte mal ein bisschen Hilfe. Hab hier ein Malprogramm, mit dem ich auf nen BufferedImage zeichnen möchte. Das ist mein erstes Problem. Wenn ich gezeichnet habe und das dann speichern möchte, speichert er nur ein schwarzes Bild welches dann auch nur die größe des "Startfensters" hat also: main.setSize(640, 480);
Dann zum zweiten Problem was ich nicht in den Griff bekomme. Habe vor verschiedene Zeichenfunktionen einzubinden wie Linie,Kreis,Rechteck und Punkte(sollen fließend dargestellt werden)
Ich hoffe das euch der Code im zusammenhang aussagekräftig genug ist
Würd mich riesig freuen wenn mir einer weiterhelfen kann.
mfg moritz
Hey ich bräuchte mal ein bisschen Hilfe. Hab hier ein Malprogramm, mit dem ich auf nen BufferedImage zeichnen möchte. Das ist mein erstes Problem. Wenn ich gezeichnet habe und das dann speichern möchte, speichert er nur ein schwarzes Bild welches dann auch nur die größe des "Startfensters" hat also: main.setSize(640, 480);
Dann zum zweiten Problem was ich nicht in den Griff bekomme. Habe vor verschiedene Zeichenfunktionen einzubinden wie Linie,Kreis,Rechteck und Punkte(sollen fließend dargestellt werden)
Code:
Variablen:
private JDialog dialog;
private JLabel status;
private JFrame f = new JFrame("Test");
private int x, y, x2, y2, breite; // Var für Zeichenoption
private BufferedImage image;
private boolean reset = true; // Check ob immer noch gezeichnet wird
private int werkzeug; // Var für Werkzeug auswahl
public void paint(Graphics g) {
// BufferedImage erstellen wird benötigt für ImageIO.write
BufferedImage image = new BufferedImage(bild.getWidth(), bild
.getHeight(), BufferedImage.TYPE_INT_RGB);
// Bild für image malen
Graphics2D big2d = image.createGraphics();
big2d.drawImage(image, null, 0, 0);
Graphics2D g2 = (Graphics2D) g;
if (werkzeug == 1) {
System.out.println("Breite 4x");
g2.drawLine(x, y, x2, y2);
}
if (werkzeug == 2) {
// (int x, int y, int width, int height)
g2.drawOval(x, y, x2 - x, y2 - x);
}
if (werkzeug == 3) {
// (int x, int y, int width, int height)
g2.drawRect(x, y, x2, y2);
}
if (werkzeug == 4) {
g2.drawLine(x, y, x2, y2);
}
}
// Sammeln der Maus Informationen und repaint()
private class MouseHandler implements MouseInputListener {
public void mouseClicked(MouseEvent e) {
status.setText("entered at (" + e.getX() + ", " + e.getY() + ")");
System.out.println("ich will hier zeichnen:" + e.getX() + " "
+ e.getY());
}
public void mouseEntered(MouseEvent e) {
status.setText("entered at (" + e.getX() + ", " + e.getY() + ")");
}
public void mouseExited(MouseEvent e) {
status.setText("exited at (" + e.getX() + ", " + e.getY() + ")");
}
public void mousePressed(MouseEvent e) {
status.setText("pressed at (" + e.getX() + ", " + e.getY() + ")");
if (werkzeug == 1 || werkzeug == 2 || werkzeug == 3) {
x = e.getX() + 4;
y = e.getY() + 48;
}
}
public void mouseReleased(MouseEvent e) {
status.setText("released at (" + e.getX() + ", " + e.getY() + ")");
if (werkzeug == 1 || werkzeug == 2 || werkzeug == 3) {
x = e.getX() + 4;
y = e.getY() + 48;
repaint();
}
}
public void mouseDragged(MouseEvent e) {
status.setText("dragged at (" + e.getX() + ", " + e.getY() + ")");
if (werkzeug == 4) {
// wenn maus beweg bzw resetet wurde neue Koordinaten
if (reset) {
reset = false;
x = e.getX() + 4;
y = e.getY() + 48;
repaint();
}
x2 = e.getX() + 4;
y2 = e.getY() + 47;
repaint();
}
}
public void mouseMoved(MouseEvent e) {
status.setText("moved at (" + e.getX() + ", " + e.getY() + ")");
reset = true;
}
}
// ZUM Speichern:
if (e.getSource() == save) {
// neuer JFileChooser zum Speichern
JFileChooser fc = new JFileChooser();
int returnVal = fc.showSaveDialog(Grafikprogramm.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
// Schreiben mit ImageIO
try {
ImageIO.write(image, "jpg", file);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
Ich hoffe das euch der Code im zusammenhang aussagekräftig genug ist
Würd mich riesig freuen wenn mir einer weiterhelfen kann.
mfg moritz