Grüße!
Ich bin zurzeit dabei, eine einfache Paint- Anwendung zu schreiben. Diese soll unter anderem die Funktion haben, aus zwei X und zwei Y - Werten ein Kreis/Oval zu zeichnen. Logischerweise mit der "drawOval" Methode. Code:
Dabei ergibt sich folgendes Problem:
Wenn ich das Oval von links-oben nach rechts-unten zeichne, funktioniert es ganz tadellos.
Wenn ich das Oval jedoch von rechts-oben nach links-unten zeichne, passiert nichts.
Der selbe Fall, wenn ich von links-unten nach rechts-oben oder von rechts-unten nach links-oben zeichne. Auf eine Lösung des Problems bin ich noch nicht gekommen, auch Google konnte mir nicht helfen, obwohl doch jedes Paint-Programm in der Lage sein sollte, die Umrisse eine Ovals zeichnen zu können.
Ich bedanke mich im Voraus.
Ich bin zurzeit dabei, eine einfache Paint- Anwendung zu schreiben. Diese soll unter anderem die Funktion haben, aus zwei X und zwei Y - Werten ein Kreis/Oval zu zeichnen. Logischerweise mit der "drawOval" Methode. Code:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
class Malen extends JFrame implements ActionListener
{
public static int x = 0;
public static int y = 0;
public static int x2 = 0;
public static int y2 = 0;
public static boolean drawC = false;
JButton circle;
public static void main (String [] args)
{
Malen frame = new Malen("Malen");
frame.setVisible(true);
frame.setSize(400,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Malen(String str)
{
super(str);
circle = new JButton("Circle");
circle.setActionCommand("c");
circle.addActionListener(this);
ZeichenPanel drawPanel = new ZeichenPanel();
drawPanel.setBackground(Color.BLACK);
add(circle, BorderLayout.NORTH);
add(drawPanel, BorderLayout.CENTER);
addMouseListener(new InMalen());
//Insets inset = circle.getInsets();
//System.out.println(inset);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("c"))
{
drawC = true;
repaint();
}
}
class InMalen extends MouseAdapter
{
public void mousePressed(MouseEvent m)
{
x = m.getX();
y = m.getY();
//System.out.println("X = " + x + " Y = " + y);
}
public void mouseReleased(MouseEvent n)
{
x2 = n.getX();
y2 = n.getY();
//System.out.println("X2 = " + x2 + " Y2 = " + y2);
}
}
class ZeichenPanel extends JPanel
{
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.ORANGE);
if (drawC)
{
repaint();
g.drawOval(x - 8, y - 56, x2 - x, y2 - y);
// Von x müssen noch 8 Pixel, von y 56 Pixel
//subtrahiert werden, damit das Oval nicht
// versetzt gezeichnet wird.
}
}
}
}
Dabei ergibt sich folgendes Problem:
Wenn ich das Oval von links-oben nach rechts-unten zeichne, funktioniert es ganz tadellos.
Wenn ich das Oval jedoch von rechts-oben nach links-unten zeichne, passiert nichts.
Der selbe Fall, wenn ich von links-unten nach rechts-oben oder von rechts-unten nach links-oben zeichne. Auf eine Lösung des Problems bin ich noch nicht gekommen, auch Google konnte mir nicht helfen, obwohl doch jedes Paint-Programm in der Lage sein sollte, die Umrisse eine Ovals zeichnen zu können.
Ich bedanke mich im Voraus.