1. 程式人生 > >JAVA Graphics實現變色、漸變、陰影、傾斜、立體

JAVA Graphics實現變色、漸變、陰影、傾斜、立體

Graphics實現變色、漸變、陰影、傾斜、立體幾種效果;瞭解了這幾種效果後便於實現點選驗證碼,為下一篇做準備。

package cn;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 * 會變色的文字
 */
public class ChangeColorTextFrame extends JFrame {
    private ChangeColorTextPanel changeColorTextPanel = new ChangeColorTextPanel();

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ChangeColorTextFrame frame = new ChangeColorTextFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        ChangeColorTextFrame frame=new ChangeColorTextFrame();
        frame.setVisible(true);
}

    public ChangeColorTextFrame() {
        super();
        setBounds(100, 100, 400, 205);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("會變色的文字");
        getContentPane().add(changeColorTextPanel);
        Thread thread = new Thread(changeColorTextPanel);// 建立執行緒物件
        thread.start();// 啟動執行緒物件
    }

    class ChangeColorTextPanel extends JPanel implements Runnable { // 建立內部面板類
        Color color = new Color(0, 0, 255);

        public void paint(Graphics g) { // 重寫paint()方法
            Graphics2D g2 = (Graphics2D) g;// 轉換為Graphics2D型別
            String value = "《視訊學Java程式設計》";// 繪製的文字
            int x = 2; // 文字位置的橫座標
            int y = 90; // 文字位置的縱座標
            Font font = new Font("楷體", Font.BOLD, 40); // 建立字型物件
            g2.setFont(font); // 設定字型
            g2.setColor(color);// 設定顏色
            g2.drawString(value, x, y); // 繪製文字
        }

        public void run() {
            Random random = new Random();// 建立隨機數物件
            while (true) {
                int R = random.nextInt(256);// 隨機產生顏色的R值
                int G = random.nextInt(256);// 隨機產生顏色的G值
                int B = random.nextInt(256);// 隨機產生顏色的B值
                color = new Color(R, G, B);// 建立顏色物件
                repaint();// 呼叫paint()方法
                try {
                    Thread.sleep(300);// 休眠300毫秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}


package cn;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 * 漸變效果的文字
 */
public class GradientTextFrame extends JFrame {
    private GradientTextPanel gradientTextPanel = new GradientTextPanel();
    
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    GradientTextFrame frame = new GradientTextFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    public GradientTextFrame() {
        super();
        setBounds(100, 100, 365, 205);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("漸變效果的文字");
        getContentPane().add(gradientTextPanel);
    }
    
    class GradientTextPanel extends JPanel { // 建立內部面板類
        public void paint(Graphics g) { // 重寫paint()方法
            Graphics2D g2 = (Graphics2D) g;// 轉換為Graphics2D型別
            String value = "Java全能";// 繪製的文字
            int x = 15; // 文字位置的橫座標
            int y = 60; // 文字位置的縱座標
            Font font = new Font("楷體", Font.BOLD, 60); // 建立字型物件
            g2.setFont(font); // 設定字型
            // 建立迴圈漸變的GraphientPaint物件
            GradientPaint paint = new GradientPaint(20, 20, Color.BLUE, 100,120, Color.RED, true);
            g2.setPaint(paint);// 設定漸變
            g2.drawString(value, x, y); // 繪製文字
            font = new Font("華文行楷", Font.BOLD, 60); // 建立新的字型物件
            g2.setFont(font); // 設定字型
            x = 80; // 文字位置的橫座標
            y = 130; // 文字位置的縱座標
            value = "程式設計詞典";// 繪製的文字
            g2.drawString(value, x, y); // 繪製文字
        }
    }
}


package cn;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 * 陰影效果的文字
 */
public class ShadowTextFrame extends JFrame {
    private ShadowTextPanel shadowTextPanel = new ShadowTextPanel();
    
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ShadowTextFrame frame = new ShadowTextFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    public ShadowTextFrame() {
        super();
        setBounds(100, 100, 354, 205);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("陰影效果的文字");
        getContentPane().add(shadowTextPanel);
    }
    
    class ShadowTextPanel extends JPanel { // 建立內部面板類
        public void paint(Graphics g) { // 重寫paint()方法
            String value = "程式設計詞典";
            int x = 16; // 文字位置的橫座標
            int y = 100; // 文字位置的縱座標
            Font font = new Font("華文行楷", Font.BOLD, 72); // 建立字型物件
            g.setFont(font); // 設定字型
            g.setColor(Color.GRAY);// 設定顏色為灰色
            int i = 0;// 迴圈變數
            g.drawString(value, x, y); // 繪製文字
            x -= 3;// 調整繪製點的橫座標值
            y -= 3;// 調整繪製點的縱座標值
            g.setColor(Color.BLACK);// 設定顏色黑色
            g.drawString(value, x, y); // 繪製文字
        }
    }
}

package cn;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 * 傾斜效果文字
 */
public class ShearTextFrame extends JFrame {
    private ShearTextPanel shearTextPanel = new ShearTextPanel();
    
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ShearTextFrame frame = new ShearTextFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    public ShearTextFrame() {
        super();
        setBounds(100, 100, 365, 205);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("傾斜效果的文字");
        getContentPane().add(shearTextPanel);
    }
    
    class ShearTextPanel extends JPanel { // 建立內部面板類
        public void paint(Graphics g) { // 重寫paint()方法
            Graphics2D g2 = (Graphics2D)g;// 轉換為Graphics2D型別
            String value = "程式設計詞典";// 繪製的文字
            int x = 10; // 文字位置的橫座標
            int y = 170; // 文字位置的縱座標
            Font font = new Font("華文行楷", Font.BOLD, 72); // 建立字型物件
            g2.setFont(font); // 設定字型
            g2.shear(0.1, -0.4);// 傾斜畫布
            g2.drawString(value, x, y); // 繪製文字
        }
    }
}

package cn;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
 * 立體效果文字
 */
public class SolidTextFrame extends JFrame {
    private SolidTextPanel solidTextPanel = new SolidTextPanel();
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    SolidTextFrame frame = new SolidTextFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    public SolidTextFrame() {
        super();
        setBounds(100, 100, 354, 205);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("立體效果的文字");
        getContentPane().add(solidTextPanel);
    }
    class SolidTextPanel extends JPanel { // 建立內部面板類
        public void paint(Graphics g) { // 重寫paint()方法
            String value = "明日科技";
            int x = 16; // 文字位置的橫座標
            int y = 100; // 文字位置的縱座標
            Font font = new Font("宋體", Font.BOLD, 72); // 建立字型物件
            g.setFont(font); // 設定字型
            g.setColor(Color.GRAY);// 設定顏色為灰色
            int i = 0;// 迴圈變數
            while (i<8){
                g.drawString(value, x, y); // 繪製文字
                x+=1;// 調整繪製點的橫座標值
                y+=1;// 調整繪製點的縱座標值
                i++;// 調整迴圈變數的值
            }
            g.setColor(Color.BLACK);// 設定顏色黑色
            g.drawString(value, x, y); // 繪製文字
        }
    }
}

打賞

如果覺得我的文章對你有幫助,有錢就捧個錢場,沒錢就捧個人場,歡迎點贊或轉發 ,並請註明原出處,謝謝....


相關推薦

JAVA Graphics實現變色漸變陰影傾斜立體

Graphics實現變色、漸變、陰影、傾斜、立體幾種效果;瞭解了這幾種效果後便於實現點選驗證碼,為下一篇做準備。package cn; import java.awt.Color; import java.awt.EventQueue; import java.awt.Fon

Java 如何實現執行緒間通訊?(notifyjoinCountdownLatchCyclicBarrierFutureTaskCallable )

  轉自:https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247486499&idx=1&sn=d3f2d6959df7299bfbe2d663f6c4d353&chksm=ebd6330fdca1ba1

css實現動態陰影蝕刻文字漸變文字

css實現動態陰影 建立與類似的陰影box-shadow 而是基於元素本身的顏色。 程式碼實現: <div class="dynamic-shadow-parent"> <div class="dynamic-shadow"><

使用Java實現數據庫編程—05 事務視圖索引備份和恢復

lena 三層 lis 行修改 文件加載 工具 gin 並且 ron 1、事務(Transaction): 事務是將一系列數據操作綁成一個整體進行統一管理。 如果一事務執行成功,則咋子該事務中進行的所有數據更改均會提交,稱為數據庫中的永久成部分。 如果事務執行是遇到

Java常用的八種排序演算法與程式碼實現(二):歸併排序法快速排序法

注:這裡給出的程式碼方案都是通過遞迴完成的 --- 歸併排序(Merge Sort):   分而治之,遞迴實現   如果需要排序一個數組,我們先把陣列從中間分成前後兩部分,然後對前後兩部分進行分別排序,再將排好序的數組合並在一起,這樣整個陣列就有序了   歸併排序是穩定的排序演算法,時間

演算法學習——中國大學MOOC-陳越何欽銘-資料結構-起步能力自測題——java程式碼實現

自測-1 列印沙漏 (20 point(s)) 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大

Java實現FTP伺服器上傳下載下載多個寫入本地刪除

場景:需要從FTP伺服器一個檔案目錄下down下來所有的檔案,上傳到專案某個目錄下。 上傳下載刪除獲取檔案下所有檔案,順便加上獲取到所有檔案進行下載。 package a1; /** * 1----public boolean uploadFile(String path ,Fi

java實現接收感測器裡面的溫溼度各種氣體大氣壓

之前主要依靠公司裡面一個同事用vb編的程式,因為我不知道crc校驗是怎麼出來的,為了趕專案用了vb,然後用java 呼叫資料庫裡面的資料;但是一個專案應該統一語言的; 我需要接受如下感測器資訊 感測器(-130米主通風井) 192.168.1

自定義元件開發五 陰影 漸變和點陣圖運算

介紹陰影、漸變和點陣圖運算等技術 陰影只是一個狹義的說法,實際上也包括髮光等效果;Android 也提供了強大的漸變功能,漸變能為物體帶來更真實的質感,比如可以用漸變繪製一顆五子棋或一根金屬圓棒;點陣圖運算就更有趣了,Android 為 Bitmap 的運算提供了多達16 種運算方法,

java的知識點23——泛型GenericsCollection介面List特點和常用方法 ArrayList特點和底層實現

泛型Generics 一般通過“容器”來容納和管理資料。程式中的“容器”就是用來容納和管理資料。 陣列就是一種容器,可以在其中放置物件或基本型別資料。 陣列的優勢:是一種簡單的線性序列,可以快速地訪問陣列元素,效率高。如果從效率和型別檢查的角度講,陣列是最好的。 陣列的劣勢:不靈活。

java程式設計實現集合的交差和補運算

    一、實驗目的 掌握集合的交、並、差和補運算,並且使用計算機程式設計實現。 二、實驗內容 通過程式設計實現求給定集合A和B的並集C(C=A∪B)、交集C(C=A∩B)、差集C(C=A-B)、補集~C=E-C的運算。 三、實驗要求 C、C++

java多執行緒系列(一):ThreadRunnableCallable實現多執行緒的區別

實現多執行緒 java實現多執行緒的方法有三種,分別是繼承thread類,實現runnable介面,實現callable介面(call方法有返回值) /** * 繼承Thread */ public class MyThread extends Thread{ int a = 0;

非對稱加密的簽名和驗籤加密和解密的Java語言實現

本文采用java.security包的簽名和驗籤。採用A的私鑰簽名傳送至B,B採用A的公鑰進行驗籤。 加解密可以私鑰加密、公鑰解密(或者公鑰加密、私鑰解密)。 一般用於銀行報文傳輸、支付寶、微信、銀行以及各大銀行的資料交換。 package com.example.demo; impo

如何實現視窗陰影效果 (SysShadow分層視窗DWM)

方法一、系統屬性:   為了實現陰影效果,這兩天google了不少,終於從 SysShadow 中找到了一點線索。 給視窗新增陰影:     SetClassLong(this->m_hWnd, G

【資料結構與演算法】之單鏈表雙鏈表迴圈連結串列的基本介紹及其Java程式碼實現---第三篇

一、連結串列的基本介紹 連結串列的定義:連結串列是一種遞迴的資料結構,它或者為空(null),或者是指向一個結點(node)的引用,該結點含有一個泛型的元素和一個指向另一條連結串列的引用。----Algorithms  Fourth  Edition   常見的連結串

java的知識點12——==和equals方法 super關鍵字 繼承樹追溯封裝的作用和含義封裝的實現—使用訪問控制符封裝的使用細節

==和equals方法 “==”代表比較雙方是否相同。如果是基本型別則表示值相等,如果是引用型別則表示地址相等即是同一個物件。  Object 的 equals 方法預設就是比較兩個物件的hashcode,是同一個物件的引用時返回 true 否則返回 false。但是,我

Java常用的八種排序演算法與程式碼實現(一):氣泡排序法插入排序法選擇排序法

這三種排序演算法適合小規模資料排序 ---   共同點:基於比較,時間複雜度均為O(n2),空間複雜度均為O(1)(原地排序演算法)   不同點:插入排序和氣泡排序是穩定的排序演算法,選擇排序不是 ---   穩定排序演算法:可以保持數值相等的兩個物件,在排序之

Java多執行緒的實現(程序與執行緒的概念Java繼承Thread類實現多執行緒Java實現Runnable介面實現多執行緒Thread與Runnable的區別實現Callable介面實現多執行緒)

1 程序與執行緒 1.1 程序與執行緒的概念 什麼是程序?   程序: 作業系統中一個程式的執行週期。(比如我們想要在電腦上登入QQ,從雙擊qq按鈕---->關閉qq這個過程就是一個程序)   多程序: 同一時刻跑多個程式。   在DOS(磁碟作業系統時

二叉搜尋樹的插入刪除查詢等操作:Java語言實現

1 二叉搜尋樹介紹 二叉搜尋樹(BST, Binary Search Tree),也稱二叉排序樹或二叉查詢樹。二叉搜尋樹:一棵二叉樹,可以為空;如果不為空,滿足以下性質:1. 非空左子樹的所有鍵值小於其根結點的鍵值。2. 非空右子樹的所有鍵值大於其根結點的鍵值。3. 左、右子

mongodb多表查詢外來鍵關聯,命令+java方式實現

首先,我們回憶一下,MySQL多表關聯查詢的語句: student表: CALSS表: 通過student的classId關聯進行查詢學生名稱,班級的資料: SELECT student.name,student.age,class.name FROM stud