setXORMode()

Status
Nicht offen für weitere Antworten.

Reality

Top Contributor
Ich,
ich verstehe dir Bedeutung von setXORMode() nicht so richtig:

Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class XOR extends Applet {
  int chsX = 100, chsY = 100;
  
  public XOR(){
    addMouseMotionListener(new MouseMotionAdapter(){
      public void mouseMoved(MouseEvent me){
        int x = me.getX();
        int y = me.getY();
        int chsX = x - 10;
        int chsY = y - 10;
        repaint();
      }
    });
  }
  
  public void paint(Graphics g){
    g.drawLine(0, 0, 100, 100);
    g.drawLine(0, 100, 100, 0);
    g.setColor(Color.BLUE);
    g.drawLine(40, 25, 250, 180);
    g.drawLine(75, 90, 400, 400);
    g.setColor(Color.green);
    g.drawRect(10, 10, 60, 50);
    g.fillRect(100, 10, 60, 50);
    g.setColor(Color.red);
    g.drawRoundRect(190, 10, 60, 50, 15, 15);
    g.fillRoundRect(70, 90, 140, 100, 30, 40);
    g.setColor(Color.CYAN);
    g.drawLine(20, 150, 400, 40);
    g.drawLine(5, 290, 80, 19);
    
    //xor-Fadenkreuz
    g.setXORMode(Color.black);
    g.drawLine(chsX - 10, chsY, chsX+10, chsY);
    g.drawLine(chsX, chsY-10, chsX, chsX+10);
    g.setPaintMode();
  }
}

Die Erklärung:

Der Zeichenmodus legt fest, wie Objekte im Fenster gezeichnet werden. Standardmäßig überschreibt eine neue Ausgabe in einem Fenster den vorhandenen Inhalt. Neue Objekte können aber auch mit der Methode setXORMode() im XOR-Modus (invertiert) einem Fenster hinzugefügt werden:

void setXORMode(Color xorFarbe)

xorFarbe gibt die Farbe an, die beim Zeichnen eines Objektes im Fenster invertiert wird.
Der Vorteil des XOR-Mouds liegt darin, dass das neue Objekt sichtbar ist, egal mit welches Farbe das Objekt übermalt wird.

Mit der Methode setPaintMode() kehrt man wieder in den überschreibenden Modus zurück.

Was wird da überschrieben?

Liebe Grüße
Reality
 

Illuvatar

Top Contributor
Du hast eine Farbe, du zeichnest mit einer anderen Farbe drüber, und die entstehende Farbe ist

Code:
Color c = new Color (oldcolor.red ^ newcolor.red, oldcolor.green ^ newcolor.green, oldcolor.blue ^ newcolor.blue);
 
Status
Nicht offen für weitere Antworten.

Oben