博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java知多少(97)绘图模式概述
阅读量:5361 次
发布时间:2019-06-15

本文共 2127 字,大约阅读时间需要 7 分钟。

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

  • 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 = gray25         g.setColor(Color.green);26         g.drawLine(80, 100, 180, 200); //该直线是green+yellow = gray27         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 }

 

 

系列文章:

转载于:https://www.cnblogs.com/Coda/p/4589644.html

你可能感兴趣的文章
HIVE和HADOOP的一些东西
查看>>
alibaba / zeus 安装 图解
查看>>
Planned Delivery Time as Work Days (SCN discussion)
查看>>
Ubuntu:让桌面显示回收站
查看>>
Android上传头像代码,相机,相册,裁剪
查看>>
git 安装体验
查看>>
Oracle 给已创建的表增加自增长列
查看>>
《DSP using MATLAB》Problem 2.17
查看>>
if 循环
查看>>
uva 111 History Grading(lcs)
查看>>
Python学习week2-python介绍与pyenv安装
查看>>
php判断网页是否gzip压缩
查看>>
一个有意思的js实例,你会吗??[原创]
查看>>
sql server中bit字段实现取反操作
查看>>
Part3_lesson2---ARM指令分类学习
查看>>
jQuery拖拽原理实例
查看>>
JavaScript 技巧与高级特性
查看>>
Uva 11729 Commando War
查看>>
增强学习(一) ----- 基本概念
查看>>
ubuntu下USB连接Android手机
查看>>