最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的繪圖模式使用淺析

 更新時(shí)間:2015年10月09日 08:53:39   投稿:goldensun  
這篇文章主要介紹了Java的繪圖模式使用淺析,以一個(gè)小例子大概列舉了XOR模式下能干的一些事情,需要的朋友可以參考下

繪圖模式是指后繪制的圖形與早先繪制的圖形有重疊時(shí),如何確定重疊部分的顏色。例如,后繪制的覆蓋早先繪制的;或者后繪制與早先繪制的兩種顏色按某種規(guī)則混合。主要有正常模式和異或模式兩種:正常模式是后繪制的圖形覆蓋在早先繪制的圖形之上,使早先販圖形的重疊部分不再可見(jiàn)。異或模式把繪圖看作是按圖形著色。異或模式繪圖時(shí),將當(dāng)前正要繪圖的顏色、原先繪制的顏色以及異或模式設(shè)定的顏色作特定的運(yùn)算,得到實(shí)際繪圖顏色。設(shè)置繪圖模式的方法有:
setPaintMode():設(shè)置繪圖模式為覆蓋模式(正常模式)。正常模式是繪圖的默認(rèn)模式。
setXORMode(Color c):設(shè)置繪圖模式為異或模式,參數(shù)c為異或模式設(shè)定的繪圖顏色。

設(shè)背景色為B,用setXORMode()設(shè)置的顏色為C,另用某個(gè)非背景色D繪圖,XOR模式有以下確定實(shí)際繪圖顏色的法則:

  • B + B = C,用背景色繪圖,出現(xiàn)C顏色。
  • D + D = B,當(dāng)一個(gè)圖形重畫(huà)時(shí)就能清除原先畫(huà)的圖形。
  • B + D = B和D的混合色(當(dāng)B,D不相同時(shí))。

如果某區(qū)域已用D著色,再用E著色,則結(jié)果是:

  • D + E = D和E的混合色(當(dāng)D,E不相同時(shí))。

XOR繪圖模式實(shí)例

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); //設(shè)置XOR繪圖模式,顏色為紅色
    g.setColor(Color.green);
    g.fillRect(20, 20, 80, 40); //實(shí)際顏色是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); //實(shí)際顏色是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); //同上
    /*再繪制部分重疊的直線.原直線中間段是灰色+灰色=背景色,延長(zhǎng)部分是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);
  }
}

相關(guān)文章

  • SpringBoot三種打包方法舉例詳解

    SpringBoot三種打包方法舉例詳解

    這篇文章主要給大家介紹了關(guān)于SpringBoot三種打包方法的相關(guān)資料,Spring Boot是一個(gè)開(kāi)發(fā)框架,目的是簡(jiǎn)化Spring應(yīng)用的初始搭建過(guò)程和開(kāi)發(fā)過(guò)程,文中提供了3種打包方法,需要的朋友可以參考下
    2023-12-12
  • SpringBoot讀寫(xiě)xml上傳到AWS存儲(chǔ)服務(wù)S3的示例

    SpringBoot讀寫(xiě)xml上傳到AWS存儲(chǔ)服務(wù)S3的示例

    這篇文章主要介紹了SpringBoot讀寫(xiě)xml上傳到S3的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-10-10
  • 在Java中int和byte[]的相互轉(zhuǎn)換

    在Java中int和byte[]的相互轉(zhuǎn)換

    這篇文章主要介紹了在Java中int和byte[]的相互轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • Java面試synchronized偏向鎖后hashcode存址

    Java面試synchronized偏向鎖后hashcode存址

    這篇文章主要為大家介紹了Java面試中synchronized偏向鎖后hashcode存址詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 選擇Spring Boot項(xiàng)目的內(nèi)嵌容器的理由

    選擇Spring Boot項(xiàng)目的內(nèi)嵌容器的理由

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。這篇文章主要介紹了選擇Spring Boot項(xiàng)目的內(nèi)嵌容器,需要的朋友可以參考下
    2017-11-11
  • SpringBoot基于MyBatis-Plus實(shí)現(xiàn)Lambda Query查詢(xún)的示例代碼

    SpringBoot基于MyBatis-Plus實(shí)現(xiàn)Lambda Query查詢(xún)的示例代碼

    MyBatis-Plus 是 MyBatis 的增強(qiáng)工具,簡(jiǎn)化了數(shù)據(jù)庫(kù)操作,并提高了開(kāi)發(fā)效率,它提供了多種查詢(xún)方式,包括常規(guī)的 SQL 查詢(xún)、Lambda Query 查詢(xún)、分頁(yè)查詢(xún)、條件查詢(xún)等,在本篇博客中,我們將詳細(xì)講解如何使用 MyBatis-Plus 的各種查詢(xún)方式,需要的朋友可以參考下
    2025-01-01
  • SpringBoot日志打印實(shí)踐過(guò)程

    SpringBoot日志打印實(shí)踐過(guò)程

    文章介紹了如何在SpringBoot項(xiàng)目中使用Logback實(shí)現(xiàn)日志打印,并通過(guò)自定義日志打印工具類(lèi)和日志分文件打印來(lái)提高日志排查和監(jiān)控的效率
    2024-12-12
  • Java8新特性之Stream使用詳解

    Java8新特性之Stream使用詳解

    這篇文章主要介紹了Java8新特性之Stream使用詳解,流是用來(lái)處理集合中的數(shù)據(jù),以聲明的形式操作集合,它就像SQL語(yǔ)句,我們只需告訴流需要對(duì)集合進(jìn)行什么操作,它就會(huì)自動(dòng)進(jìn)行操作,并將執(zhí)行結(jié)果交給你,無(wú)需我們自己手寫(xiě)代碼,需要的朋友可以參考下
    2023-08-08
  • SpringBoot前后端json數(shù)據(jù)交互的全過(guò)程記錄

    SpringBoot前后端json數(shù)據(jù)交互的全過(guò)程記錄

    現(xiàn)在大多數(shù)互聯(lián)網(wǎng)項(xiàng)目都是采用前后端分離的方式開(kāi)發(fā),下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端json數(shù)據(jù)交互的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Spring?BeanFactory容器的構(gòu)建和使用示例詳解

    Spring?BeanFactory容器的構(gòu)建和使用示例詳解

    BeanFactory是Spring框架中的一部分,它提供了IoC(控制反轉(zhuǎn))的實(shí)現(xiàn)機(jī)制,下面小編就來(lái)和大家簡(jiǎn)單聊聊BeanFactory容器的構(gòu)建和使用示例吧
    2023-07-07

最新評(píng)論

通州市| 招远市| 涞源县| 大关县| 舟曲县| 商南县| 防城港市| 昆山市| 望都县| 大宁县| 新津县| 宿松县| 个旧市| 莱西市| 石棉县| 芷江| 洛宁县| 灵宝市| 邯郸县| 怀来县| 武邑县| 武鸣县| 内黄县| 河北省| 固始县| 南昌县| 九江市| 安塞县| 花莲县| 金门县| 磴口县| 邹城市| 江阴市| 莆田市| 翁源县| 泸定县| 高邮市| 金门县| 龙南县| 巧家县| 理塘县|