本文實例為大家分享了Java實現顏色漸變效果的具體代碼,供大家參考,具體內容如下
RGB色彩,在自然界中肉眼所能看到的任何色彩都可以由紅(R)、綠(G)、藍(B)這三種色彩混合疊加而成,因此我們只要遞增遞減的修改其特定值就能得到相應的漸變效果。
運行效果:(圖1)

運行5秒后:(圖2)

Java源代碼:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* 圖片顯示面板類<br>
* 顏色漸變效果測試
*
* @author WQL
*
*/
public class ImagePanel extends JPanel {
private static final long serialVersionUID = 1L;
private int height = 350; // 高度
private int width = 600; // 寬度
private BufferedImage bufImg = null; // 在該BufferedImage對象中繪制顏色
/**
* 構造方法
*/
public ImagePanel() {
this.setPreferredSize(new Dimension(width, height)); // 設置首選大小
}
/**
* 初始化顏色
*/
private void initColor() {
bufImg = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);// 實例化BufferedImage
Graphics g = bufImg.getGraphics(); // 獲取圖片的Graphics
int w = width / 6; // 分成六個部分進行繪制
for (int i = 0; i < w; i++) {
int x = 0;
int d = (int) (i * (255.0 / w)); // 使d從0遞增到255,實際可能只是接近255
// 畫第一部分顏色---紅色到黃色
g.setColor(new Color(255, d, 0)); // 設置顏色
g.drawLine(i + w * x, 0, i + w * x++, height); // 畫直線---一條單色豎線
// 畫第二部分顏色---黃色到綠色
g.setColor(new Color(255 - d, 255, 0));
g.drawLine(i + w * x, 0, i + w * x++, height);
// 畫第三部分顏色---綠色到青色
g.setColor(new Color(0, 255, d));
g.drawLine(i + w * x, 0, i + w * x++, height);
// 畫第四部分顏色---青色到藍色
g.setColor(new Color(0, 255 - d, 255));
g.drawLine(i + w * x, 0, i + w * x++, height);
// 畫第五部分顏色---藍色到洋紅色
g.setColor(new Color(d, 0, 255));
g.drawLine(i + w * x, 0, i + w * x++, height);
// 畫第六部分顏色---洋紅色到紅色
g.setColor(new Color(255, 1, 255 - d));
g.drawLine(i + w * x, 0, i + w * x++, height);
}
repaint(); // 重繪
try {
System.out.println("5秒后繪制黑色分隔線..");
Thread.sleep(5000); // 線程休息
} catch (InterruptedException e) {
e.printStackTrace();
}
// 繪制黑線來隔開六個部分
System.out.println("開始繪制黑色分隔線...");
g.setColor(Color.BLACK); // 設置黑色
for (int i = 1; i < w; i++) {
g.drawLine(i * w, 0, i * w, height); // 畫直線
}
repaint(); // 重繪
}
/**
* 繪制圖片
*/
public void paint(Graphics g) {
g.drawImage(bufImg, 0, 0, null); // 畫圖片
}
/**
* 主方法
*/
public static void main(String[] args) {
JFrame f = new JFrame("顏色漸變效果"); // 實例化一個窗體
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 設置窗體關閉時退出程序
ImagePanel imgPanel = new ImagePanel(); // 實例化圖片顯示面板
f.getContentPane().add(imgPanel); // 添加到窗體
f.pack(); // 根據窗體子組件的首選大小進行調整
f.setLocationRelativeTo(null); // 設置窗體在屏幕中居中顯示
f.setVisible(true); // 顯示窗體
imgPanel.initColor(); // 繪制顏色
}
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。