Java知多少(97)绘图模式概述

java


绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色。例如,后绘制的覆盖早先绘制的;或者后绘制与早先绘制的两种颜色按某种规则混合。主要有正常模式和异或模式两种:正常模式是后绘制的图形覆盖在早先绘制的图形之上,使早先贩图形的重叠部分不再可见。异或模式把绘图看作是按图形着色。异或模式绘图时,将当前正要绘图的颜色、原先绘制的颜色以及异或模式设定的颜色作特定的运算,得到实际绘图颜色。设置绘图模式的方法有:

  • setPaintMode():设置绘图模式为覆盖模式(正常模式)。正常模式是绘图的默认模式。
  • setXORMode(Color c):设置绘图模式为异或模式,参数c为异或模式设定的绘图颜色。


设背景色为B,用setXORMode()设置的颜色为C,另用某个非背景色D绘图,XOR模式有以下确定实际绘图颜色的法则:
B + B = C,用背景色绘图,出现C颜色。
D + D = B,当一个图形重画时就能清除原先画的图形。
B + D = B和D的混合色(当B,D不相同时)。
如果某区域已用D着色,再用E着色,则结果是:
D + E = D和E的混合色(当D,E不相同时)。

 1 【例12-4】使用XOR绘图模式的应用程序,绘图效果参见图7.2。

2 import javax.swing.*;

3 import java.awt.*;

4 public class Example7_4 extends JFrame{

5 public static void main(String args[]){

6 GraphicsDemo myGraphicsFrame = new GraphicsDemo();

7 }

8 }

9 class ShapesPanel extends JPanel{

10 SharpesPanel(){

11 setBackground(Color.white);

12 }

13 public void paintComponent(Graphics g){

14 super.paintComponent(g);

15 setBackground(Color.yellow); //背景色为黄色

16 g.setXORMode(Color.red); //设置XOR绘图模式,颜色为红色

17 g.setColor(Color.green);

18 g.fillRect(20, 20, 80, 40); //实际颜色是green + yellow的混合色=灰色

19 g.setColor(Color.yellow);

20 g.fillRect(60, 20, 80, 40); //后一半是yellow+yellow=read,前一半是yellow+灰色

21 g.setColor(Color.green);

22 g.fillRect(20, 70, 80, 40); //实际颜色是green+yellow的混合色=灰色.

23 g.fillRect(60, 70, 80, 40);

24 //前一半是(green+yellow)+gray =背景色,后一半是green+yellow = gray

25 g.setColor(Color.green);

26 g.drawLine(80, 100, 180, 200); //该直线是green+yellow = gray

27 g.drawLine(100, 100, 200, 200); //同上

28 /*再绘制部分重叠的直线.原直线中间段是灰色+灰色=背景色,延长部分是green+yellow=gray.*/

29 g.drawLine(140, 140, 220, 220);

30 g.setColor(Color.yellow); //分析下列直线颜色变化,与早先的力有重叠

31 g.drawLine(20, 30, 160, 30);

32 g.drawLine(20, 75, 160, 75);

33 }

34 }

35 class GraphicsDemod extends JFrame{

36 public GraphicsDemo(){

37 this.getContentPane().add(new ShapesPanel());

38 setTile("基本绘图方法演示");

39 setSize(300, 300);

40 setVisible(true);

41 }

42 }

系列文章:

Java知多少(上)

Java知多少(中)

Java知多少(78)Java向量(Vector)及其应用

Java知多少(79)哈希表及其应用

Java知多少(80)图形界面设计基础

Java知多少(81)框架窗口基础

Java知多少(82)标签、按钮和按钮事件简介

Java知多少(83)面板基础:JPanel和JScrollPane

Java知多少(84)图形界面之布局设计

Java知多少(85)文本框和文本区

Java知多少(86)文本框和文本区的输入输出

Java知多少(87)选择框和单选按钮

Java知多少(88)列表和组合框

Java知多少(89)列表和组合框

Java知多少(90)菜单

Java知多少(91)对话框

Java知多少(92)滚动条

Java知多少(93)鼠标事件

Java知多少(94)键盘事件

Java知多少(95)绘图基础

Java知多少(96)绘图之设置字型和颜色

以上是 Java知多少(97)绘图模式概述 的全部内容, 来源链接: utcz.com/z/391414.html

回到顶部