Le mode Dessin fait référence à la façon de déterminer la couleur de la partie qui se chevauche lorsque le graphique dessiné plus tard chevauche le graphique dessiné plus tôt. Par exemple, la couleur dessinée plus tard écrase la couleur dessinée plus tôt ; ou les deux couleurs dessinées plus tard et celles dessinées plus tôt sont mélangées selon certaines règles. Il existe deux modes principaux : le mode normal et le mode XOR : Le mode normal est que les graphiques dessinés plus tard sont superposés aux graphiques dessinés plus tôt, de sorte que les parties superposées des graphiques précédents ne soient plus visibles. Le mode XOR traite le dessin comme une coloration par forme. Lors du dessin en mode XOR, des opérations spécifiques sont effectuées sur la couleur en cours de dessin, la couleur initialement dessinée et la couleur définie en mode XOR pour obtenir la couleur réelle du dessin. Les méthodes pour définir le mode de dessin sont :
setPaintMode() : Définissez le mode de dessin en mode superposition (mode normal). Le mode normal est le mode par défaut pour le dessin.
setXORMode(Color c) : définissez le mode de dessin sur le mode XOR et le paramètre c est la couleur de dessin définie en mode XOR.
Supposons que la couleur d'arrière-plan soit B, que la couleur définie avec setXORMode() soit C et qu'une couleur autre que l'arrière-plan D soit utilisée pour le dessin. Le mode XOR a les règles suivantes pour déterminer la couleur réelle du dessin :
B B = C, dessinez avec la couleur de fond, la couleur C apparaît.
D D = B, lorsqu'un graphique est redessiné, le graphique initialement dessiné peut être effacé.
B D = Couleur mixte de B et D (quand B et D ne sont pas identiques).
Si une zone a été colorée avec D puis colorée avec E, le résultat est :
D E = la couleur mélangée de D et E (quand D et E ne sont pas identiques).
Exemple de mode de dessin XOR
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); } }
Pour plus d'articles sur l'utilisation du mode de dessin Java, veuillez faire attention au site Web PHP chinois !