软件编程
位置:首页>> 软件编程>> java编程>> Java实现颜色渐变效果

Java实现颜色渐变效果

作者:落枫飘飘  发布时间:2023-08-25 11:10:45 

标签:java,颜色渐变

本文实例为大家分享了Java实现颜色渐变效果的具体代码,供大家参考,具体内容如下

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

运行效果:(图1)

Java实现颜色渐变效果

运行5秒后:(图2)

Java实现颜色渐变效果

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(); // 绘制颜色
  }
}

来源:https://www.cnblogs.com/wuqianling/p/5340395.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com