Java实现颜色渐变效果

RGB色彩,在自然界中肉眼所能看到的任何色彩都可以由红(R)、绿(G)、蓝(B)这三种色彩混合叠加而成,因此我们只要递增递减的修改其特定值就能得到相应的渐变效果。

运行效果:(图1)

运行5秒后:(图2)

Java源代码:

 1 import java.awt.Color;
 2 import java.awt.Dimension;
 3 import java.awt.Graphics;
 4 import java.awt.image.BufferedImage;
 5
 6 import javax.swing.JFrame;
 7 import javax.swing.JPanel;
 8
 9 /**
10  * 图片显示面板类<br>
11  * 颜色渐变效果测试
12  *
13  * @author WQL
14  *
15  */
16 public class ImagePanel extends JPanel {
17     private static final long serialVersionUID = 1L;
18     private int height = 350; // 高度
19     private int width = 600; // 宽度
20     private BufferedImage bufImg = null; // 在该BufferedImage对象中绘制颜色
21
22     /**
23      * 构造方法
24      */
25     public ImagePanel() {
26         this.setPreferredSize(new Dimension(width, height)); // 设置首选大小
27     }
28
29     /**
30      * 初始化颜色
31      */
32     private void initColor() {
33         bufImg = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);// 实例化BufferedImage
34         Graphics g = bufImg.getGraphics(); // 获取图片的Graphics
35         int w = width / 6; // 分成六个部分进行绘制
36         for (int i = 0; i < w; i++) {
37             int x = 0;
38             int d = (int) (i * (255.0 / w)); // 使d从0递增到255,实际可能只是接近255
39             // 画第一部分颜色---红色到黄色
40             g.setColor(new Color(255, d, 0)); // 设置颜色
41             g.drawLine(i + w * x, 0, i + w * x++, height); // 画直线---一条单色竖线
42             // 画第二部分颜色---黄色到绿色
43             g.setColor(new Color(255 - d, 255, 0));
44             g.drawLine(i + w * x, 0, i + w * x++, height);
45             // 画第三部分颜色---绿色到青色
46             g.setColor(new Color(0, 255, d));
47             g.drawLine(i + w * x, 0, i + w * x++, height);
48             // 画第四部分颜色---青色到蓝色
49             g.setColor(new Color(0, 255 - d, 255));
50             g.drawLine(i + w * x, 0, i + w * x++, height);
51             // 画第五部分颜色---蓝色到洋红色
52             g.setColor(new Color(d, 0, 255));
53             g.drawLine(i + w * x, 0, i + w * x++, height);
54             // 画第六部分颜色---洋红色到红色
55             g.setColor(new Color(255, 1, 255 - d));
56             g.drawLine(i + w * x, 0, i + w * x++, height);
57         }
58         repaint(); // 重绘
59         try {
60             System.out.println("5秒后绘制黑色分隔线..");
61             Thread.sleep(5000); // 线程休息
62         } catch (InterruptedException e) {
63             e.printStackTrace();
64         }
65         // 绘制黑线来隔开六个部分
66         System.out.println("开始绘制黑色分隔线...");
67         g.setColor(Color.BLACK); // 设置黑色
68         for (int i = 1; i < w; i++) {
69             g.drawLine(i * w, 0, i * w, height); // 画直线
70         }
71         repaint(); // 重绘
72     }
73
74     /**
75      * 绘制图片
76      */
77     public void paint(Graphics g) {
78         g.drawImage(bufImg, 0, 0, null); // 画图片
79     }
80
81     /**
82      * 主方法
83      */
84     public static void main(String[] args) {
85         JFrame f = new JFrame("颜色渐变效果"); // 实例化一个窗体
86         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置窗体关闭时退出程序
87         ImagePanel imgPanel = new ImagePanel(); // 实例化图片显示面板
88         f.getContentPane().add(imgPanel); // 添加到窗体
89         f.pack(); // 根据窗体子组件的首选大小进行调整
90         f.setLocationRelativeTo(null); // 设置窗体在屏幕中居中显示
91         f.setVisible(true); // 显示窗体
92         imgPanel.initColor(); // 绘制颜色
93     }
94 }
时间: 2024-10-31 16:50:19

Java实现颜色渐变效果的相关文章

java swing颜色选择器代码例子下载

原文:java swing颜色选择器代码例子下载 源代码下载地址:http://www.zuidaima.com/share/1550463730420736.htm 矿泉水2013-09-13 17:17:13 java swing颜色选择器代码例子下载

GDI+学习之 ------- 绘制角度可变的颜色渐变效果

GDI+ 是GDI(Windows 早期版本提供的图形设备接口)的后续版本,是Microsoft Windows XP作系统即后续版本的图形显示技术.它已经集成到了.Net开发环境中,所以不管你的OS是什么版本,只要安装了.Net框架,就有了GDI+(注意:是.Net框架,而不是.Net开发环境,所以Win98中也可以使用GDI+). 现在,言归正传. 在头文件中加入下面的代码: #include <GdiPlus.h> using namespace Gdiplus; #pragma com

Unity3D开发(八):NGUI之UILabel颜色渐变效果

向原创致敬http://blog.csdn.net/onerain88/article/details/19066961 1. UILabel简介 (1)UILabel支持类型 a.图字:是指根据某些工具,将游戏中需要用到的文字渲染到一张纹理上,并附其纹理信息(包括 id值,尺寸,间距等). b.字库字:是指直接载入ttf等字库文件,根据从ttf文件中读取的数据,生成纹理并渲染. (2)UILabel基本属性 Font类型:上述介绍的图字和字库字(Bitmap与Dynamic) Text:文本

jQuery实现字体颜色渐变效果

jQuery不允许css属性值为非数字的属性进行动画处理, 比如.animate(color:'red',500)或是.animate(fontWeight:'bold',500)都无法运行, 因此如果想实现颜色渐变的效果需要其他方法,示例如下 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Do

CSS在不同浏览器下实现颜色渐变效果

想做一个首页巨幕,又不想用图片,这样速度会慢掉一点点,纯色挺丑的,只好试试渐变效果咯.CSS 3有很好的颜色渐变支持,要应付一些老旧的浏览器,还是要几行代码滴. 整理如下:     background-image: -moz-linear-gradient(top, #ff4f02, #8f2c00);     /* Firefox */          background-image: -webkit-gradient(linear, left top, left bottom, col

java 随机颜色

用HSV模型来实现颜色的随机,然后转为RGB模型 色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色.黄色等. 饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值. 明度(V),亮度(L),取0-100%. 后两项如果写成固定值的话,那么色调会比较统一,以下为代码 import java.util.Random; public class RandomColorUtil{ private static Random random = new Random();

文字颜色渐变效果

h3{ font-size: 16px; font-weight: 500; display: inline-block; color: #d6a736; background-image: -webkit-linear-gradient(-45deg,#fae2a7 0%, #d6a736 40%, #d6a736 60%,#fae2a7 100%); background-image: linear-gradient(-45deg,#fae2a7 0%, #d6a736 40%, #d6a7

java 十六进制颜色对照表

我们在编程中常常用到十六进制颜色码. 下面是颜色码对照表-英文名称-十六进制-RGB: 英文代码      形像颜色       HEX格式         RGB格式 LightPink 浅粉色 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 255,192,203 Crimson 猩红 #DC143C 220,20,60 LavenderBlush 脸红的淡紫色 #FFF0F5 255,240,245 PaleVioletRed 苍白的紫罗兰红色 #DB7093 21

带颜色渐变效果的的矩形进度条

先看一下效果: 有没有亮瞎你的眼? 嗯...我说结尾的颜色. 先分析下实现的逻辑:我们用一个Drawable对象设置为button的背景:→Drawable对象我们取它的子类BitmapDrawable的一个实例,BitmapDrawAble需要一个Bitmap对象:→绘制这个bitmap:有一个外边的框框我们画一个矩形,进度那条线我们使用绘制一个Path来表现:→当前的进度值乘以矩形的周长是path的长度,根据这个长度和矩形周长的关系,使用path的lineTo,moveTo等函数对其进行设置