Heim  >  Artikel  >  Java  >  Eine kurze Analyse der Verwendung des Java-Zeichenmodus

Eine kurze Analyse der Verwendung des Java-Zeichenmodus

高洛峰
高洛峰Original
2017-01-17 16:00:101351Durchsuche

Der Zeichenmodus bezieht sich darauf, wie die Farbe des überlappenden Teils bestimmt wird, wenn die später gezeichnete Grafik die zuvor gezeichnete Grafik überlappt. Beispielsweise überschreibt die später gezeichnete Farbe die früher gezeichnete Farbe, oder die beiden später gezeichneten und die früher gezeichneten Farben werden nach bestimmten Regeln gemischt. Es gibt zwei Hauptmodi: Normalmodus und XOR-Modus: Im Normalmodus werden die später gezeichneten Grafiken über die früher gezeichneten Grafiken gelegt, sodass die überlappenden Teile der früheren Grafiken nicht mehr sichtbar sind. Der XOR-Modus behandelt das Zeichnen als Färben nach Form. Beim Zeichnen im XOR-Modus werden bestimmte Vorgänge an der aktuell gezeichneten Farbe, der ursprünglich gezeichneten Farbe und der im XOR-Modus festgelegten Farbe ausgeführt, um die tatsächliche Zeichnungsfarbe zu erhalten. Die Methoden zum Festlegen des Zeichenmodus sind:
setPaintMode(): Setzt den Zeichenmodus auf Überlagerungsmodus (normaler Modus). Der Normalmodus ist der Standardmodus zum Zeichnen.
setXORMode(Color c): Stellen Sie den Zeichenmodus auf den XOR-Modus ein, und Parameter c ist die im XOR-Modus festgelegte Zeichenfarbe.

Angenommen, die Hintergrundfarbe ist B, die mit setXORMode() festgelegte Farbe ist C und zum Zeichnen wird eine Nicht-Hintergrundfarbe D verwendet. Der XOR-Modus verfügt über die folgenden Regeln zur Bestimmung der tatsächlichen Zeichnungsfarbe:

B + B = C, mit Hintergrundfarbe zeichnen, C-Farbe erscheint.

D + D = B, wenn eine Grafik neu gezeichnet wird, kann die ursprünglich gezeichnete Grafik gelöscht werden.

B + D = Mischfarbe aus B und D (wenn B und D nicht gleich sind).

Wenn eine Fläche mit D und dann mit E eingefärbt wurde, ist das Ergebnis:

D + E = die Mischfarbe aus D und E (wenn D und E nicht gleich sind). ).

Beispiel für den XOR-Zeichenmodus

import javax.swing.*;
import java.awt.*;
public class Example7_4 extends JFrame{
  public static void main(String args[]){
    GraphicsDemo myGraphicsFrame = new GraphicsDemo();
  }
}
class ShapesPanel extends JPanel{
  SharpesPanel(){
    setBackground(Color.white);
  }
  public void paintComponent(Graphics g){
    super.paintComponent(g);
    setBackground(Color.yellow); //背景色为黄色
    g.setXORMode(Color.red); //设置XOR绘图模式,颜色为红色
    g.setColor(Color.green);
    g.fillRect(20, 20, 80, 40); //实际颜色是green + yellow的混合色=灰色
    g.setColor(Color.yellow);
    g.fillRect(60, 20, 80, 40); //后一半是yellow+yellow=read,前一半是yellow+灰色
    g.setColor(Color.green);
    g.fillRect(20, 70, 80, 40); //实际颜色是green+yellow的混合色=灰色.
    g.fillRect(60, 70, 80, 40);
    //前一半是(green+yellow)+gray =背景色,后一半是green+yellow = gray
    g.setColor(Color.green);
    g.drawLine(80, 100, 180, 200); //该直线是green+yellow = gray
    g.drawLine(100, 100, 200, 200); //同上
    /*再绘制部分重叠的直线.原直线中间段是灰色+灰色=背景色,延长部分是green+yellow=gray.*/
    g.drawLine(140, 140, 220, 220);
    g.setColor(Color.yellow); //分析下列直线颜色变化,与早先的力有重叠
    g.drawLine(20, 30, 160, 30);
    g.drawLine(20, 75, 160, 75);
  }
}
class GraphicsDemod extends JFrame{
  public GraphicsDemo(){
    this.getContentPane().add(new ShapesPanel());
    setTile("基本绘图方法演示");
    setSize(300, 300);
    setVisible(true);
  }
}

Weitere Artikel zur Verwendung des Java-Zeichenmodus finden Sie auf der chinesischen PHP-Website !

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn