Java的绘图模式使用浅析
程序员文章站
2024-03-07 08:44:56
绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色。例如,后绘制的覆盖早先绘制的;或者后绘制与早先绘制的两种颜色按某种规则混合。主要有正常模式和异或模...
绘图模式是指后绘制的图形与早先绘制的图形有重叠时,如何确定重叠部分的颜色。例如,后绘制的覆盖早先绘制的;或者后绘制与早先绘制的两种颜色按某种规则混合。主要有正常模式和异或模式两种:正常模式是后绘制的图形覆盖在早先绘制的图形之上,使早先贩图形的重叠部分不再可见。异或模式把绘图看作是按图形着色。异或模式绘图时,将当前正要绘图的颜色、原先绘制的颜色以及异或模式设定的颜色作特定的运算,得到实际绘图颜色。设置绘图模式的方法有:
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); } }
下一篇: 悬浮对话框Android代码实现