Ich bin gerade dabei, die letzten Funktionen in mein Malprogramm einzubinden. Dank der Hilfe einiger von euch sieht das Ganze ja auch nicht schlecht aus :wink:
Zum Malen nehme ich im Moment folgende Funktionen:
Ich hoffe das reicht um mein Problem zu schildern. Wenn ich von oben links nach unten rechts zeichne, klappt alles wunderbar. auch während ich die maus ziehe, wird das entsprechende Zeichenobjekt (z.b. ein Oval) bei gedrückter maustaste angezeigt und entsprechend der mausposition vergrößert oder verkleinert.
aber meint ihr ich bekomme es hin, dass das in allen richtungen funktioniert ? dürfte ja eigentlich nur ne logikfrage bei der berechnung der koordinaten sein. aber ich komme nicht auf die Lösung.
Um von unten rechts nach oben links zu zeichnen, hatte ich folgende if-Abfrage versucht:
Nur leider funktioniert die nur zur Hälfte. Ich hoffe jemand kann mir hierbei helfen ?
Zum Malen nehme ich im Moment folgende Funktionen:
Code:
public void mousePressed(MouseEvent e){
startx = e.getX();
starty = e.getY();
tempx = startx;
tempy = starty;
maxx = 0;
maxy = 0;
if (ButtonPanel.print == "rectangle")
{
rectangle = new Rect(Color.red, startx, starty, 0, 0);
}
else if (ButtonPanel.print == "oval")
{
oval = new Oval(Color.red, startx, starty, 0, 0);
}
if (ButtonPanel.print == "line")
{
line = new Line(Color.red, startx, starty, 0, 0);
}
if (ButtonPanel.print == "point")
{
point = new Point(Color.red, startx, starty);
repaint(startx, starty, startx, starty);
}
}
public void mouseDragged(MouseEvent e)
{
endx = e.getX();
endy = e.getY();
if (endx > startx && endy > starty) {
width = Math.abs(endx - startx);
height = Math.abs(endy - starty);
}
maxx = Math.max(maxx, width);
maxy = Math.max(maxy, height);
repaint(startx, starty, maxx+1, maxy+1);
}
Ich hoffe das reicht um mein Problem zu schildern. Wenn ich von oben links nach unten rechts zeichne, klappt alles wunderbar. auch während ich die maus ziehe, wird das entsprechende Zeichenobjekt (z.b. ein Oval) bei gedrückter maustaste angezeigt und entsprechend der mausposition vergrößert oder verkleinert.
aber meint ihr ich bekomme es hin, dass das in allen richtungen funktioniert ? dürfte ja eigentlich nur ne logikfrage bei der berechnung der koordinaten sein. aber ich komme nicht auf die Lösung.
Um von unten rechts nach oben links zu zeichnen, hatte ich folgende if-Abfrage versucht:
Code:
if (endx < startx && endy < starty) {
width = Math.abs(tempx - endx);
height = Math.abs(tempy - endy);
startx = e.getX();
starty = e.getY();
}
Nur leider funktioniert die nur zur Hälfte. Ich hoffe jemand kann mir hierbei helfen ?