Rechteck drehen

coacheia

Neues Mitglied
Hallo
Ich beschäftige mich erst seit kurzem mit Java und bin daher noch nicht sehr sicher darin.
Ich muss mit der linken Maustaste ein Rechteck zeichnen welches wieder verschwindet wenn ich ein Zweites zeichne. Das habe ich geschafft :idea: jedoch muss ich mit der rechten Maustaste das Rechteck um 90 Grad drehen können. Falls jemand einen Tipp hat oder einen Link wo dies erklärt ist oder selbs kurz helfen könnte dann wäre ich sehr froh :toll:

Mit freundlichen Grüssen
Sophia

Java:
 import java.applet.Applet;
import java.awt.*;


import java.awt.event.*;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
 

public class Negyszog extends Applet { 
    if (SwingUtilities.isRightMouseButton (evt))
    
    @Override

    SelectionArea drawingPanel;

    Label label;

    @Override
    public void init() {

        GridBagLayout gridBag = new GridBagLayout();

        GridBagConstraints c = new GridBagConstraints();

        setLayout(gridBag);

        drawingPanel = new SelectionArea(this);

        c.fill = GridBagConstraints.BOTH;

        c.weighty = 1.0;

        c.gridwidth = GridBagConstraints.REMAINDER; //end row

        gridBag.setConstraints(drawingPanel, c);

        add(drawingPanel);

        label = new Label("Drag within the framed area.");

        c.fill = GridBagConstraints.HORIZONTAL;

        c.weightx = 1.0;

        c.weighty = 0.0;

        gridBag.setConstraints(label, c);

        add(label);

        drawingPanel.setVisible(true);

        validate();

    }

  

    @Override
    public void update(Graphics g){

        paint(g);

    }

           

}

class SelectionArea extends Canvas implements ActionListener, MouseListener, MouseMotionListener{

 

	Rectangle currentRect;

    Negyszog controller;

    //for double buffering

    Image image;

    Graphics offscreen;

    public SelectionArea(Negyszog controller) {

        super();

        this.controller = controller;

        addMouseListener(this);

        addMouseMotionListener(this);      

    }

 
        @Override
    public void actionPerformed(ActionEvent ae){

        repaintoffscreen();

    }
     

    public void repaintoffscreen(){

        image = createImage(this.getWidth(), this.getHeight());

        offscreen = image.getGraphics();

        Dimension d = getSize();

        if(currentRect != null){

            Rectangle box = getDrawableRect(currentRect, d);           

            //Draw the box outline.

            offscreen.drawRect(box.x, box.y, box.width - 1, box.height - 1); 

            //repaint();

        }

    }

     

        @Override
    public void mouseEntered(MouseEvent me) {}

        @Override
    public void mouseExited(MouseEvent me){ }

        @Override
    public void mouseClicked(MouseEvent me){}

        @Override
    public void mouseMoved(MouseEvent me){}

     

        @Override
    public void mousePressed(MouseEvent me) {      

        currentRect = new Rectangle(me.getX(), me.getY(), 0, 0);

        repaintoffscreen();    

    }

        @Override
    public void mouseDragged(MouseEvent me) {

        System.out.println("here in dragged()");

        currentRect.setSize(me.getX() - currentRect.x, me.getY() - currentRect.y);

        repaintoffscreen();

        repaint();

    }

 
        @Override
    public void mouseReleased(MouseEvent me) {

        currentRect.setSize(me.getX() - currentRect.x, me.getY() - currentRect.y);

        repaintoffscreen(); 

        repaint();

    }

 

        @Override
    public void update(Graphics g){

        paint(g);

    }

        @Override
    public void paint(Graphics g) {

        g.drawImage(image, 0, 0, this);

    }
 

    Rectangle getDrawableRect(Rectangle originalRect, Dimension drawingArea) {

        int x = originalRect.x;

        int y = originalRect.y;

        int width = originalRect.width;

        int height = originalRect.height;

        //Make sure rectangle width and height are positive.

        if (width < 0) {

            width = 0 - width;

            x = x - width + 1;

            if (x < 0) {

                width += x;

                x = 0;

            }

        }

        if (height < 0) {

            height = 0 - height;

            y = y - height + 1;

            if (y < 0) {

                height += y;

                y = 0;

            }

        }

        //The rectangle shouldn't extend past the drawing area.

        if ((x + width) > drawingArea.width) {

            width = drawingArea.width - x;

        }

        if ((y + height) > drawingArea.height) {

            height = drawingArea.height - y;

        }

        return new Rectangle(x, y, width, height);
        
  
  
    }

}
 
Hallo Sophia,

ich habe mir deinen Code nicht vollständig durchgelesen aber scheinbar kennst du die Höhe und die Breite.
Dann speicherst du bei einem Klick der rechten Maustaste die Breite in einer Hilfsvariable, setzt die Breite auf den Wert der Höhe und schreibst den Wert der Hilfsvariable in die Variable, die die Höhe beschreibt. Also:

Java:
int hilf = breite;
breite = hoehe;
hoehe = hilf;
 

Neue Themen


Zurück
Oben