首頁 > Java > java教程 > 主體

Java的繪圖模式使用淺析

高洛峰
發布: 2017-01-17 16:00:10
原創
1350 人瀏覽過

繪圖模式是指後繪製的圖形與早先繪製的圖形有重疊時,如何確定重疊部分的顏色。例如,後繪製的覆蓋早先繪製的;或者後繪製與早先繪製的兩種顏色按某種規則混合。主要有正常模式和異或模式兩種:正常模式是後繪製的圖形覆蓋在早先繪製的圖形之上,使早先販圖形的重疊部分不再可見。異或模式把繪圖看成是按圖形著色。異或模式繪圖時,將目前正要繪圖的顏色、原先繪製的顏色以及異或模式設定的顏色作特定的運算,得到實際繪圖顏色。設定繪圖模式的方法有:
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);
  }
}
登入後複製

   

更多Java的繪圖模式使用淺析相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!