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不相同时)。
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);
}
}
相关文章
SpringBoot读写xml上传到AWS存储服务S3的示例
这篇文章主要介绍了SpringBoot读写xml上传到S3的示例,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下2020-10-10
Java面试synchronized偏向锁后hashcode存址
这篇文章主要为大家介绍了Java面试中synchronized偏向锁后hashcode存址详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-05-05
SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码
MyBatis-Plus 是 MyBatis 的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方式,包括常规的 SQL 查询、Lambda Query 查询、分页查询、条件查询等,在本篇博客中,我们将详细讲解如何使用 MyBatis-Plus 的各种查询方式,需要的朋友可以参考下2025-01-01
Spring BeanFactory容器的构建和使用示例详解
BeanFactory是Spring框架中的一部分,它提供了IoC(控制反转)的实现机制,下面小编就来和大家简单聊聊BeanFactory容器的构建和使用示例吧2023-07-07


最新评论