// ImageCreator.java
public class ImageCreator {
// 定义颜色
public static final Color mainMidColor = new Color(0, 64, 196);
public static final Color mainUltraDarkColor = new Color(0, 0, 64);
// 定义色块数量 ( 高度 )
public static final int CUBE_DIMENSION = 5;
public ImageCreator() {
}
/**
* 产生过度色块图像
* @param width 图像的宽
* @param height 图像的高
* @param leftColor 色块左侧颜色
* @param rightColor 色块结束的颜色
* @param transitionStart 过度色块开始位置
* @param transitionEnd 过度色块结束位置
* @return 创建好的图像
*/
public static BufferedImage getGradientCubesImage(int width, int height,
Color leftColor, Color rightColor, int transitionStart,
int transitionEnd) {
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = (Graphics2D) image.getGraphics();
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gradient = new GradientPaint(transitionStart, 0,
leftColor, transitionEnd, 0, rightColor);
graphics.setPaint(gradient);
graphics.fillRect(transitionStart, 0, transitionEnd - transitionStart,
height);
graphics.setColor(leftColor);
graphics.fillRect(0, 0, transitionStart, height);
graphics.setColor(rightColor);
graphics.fillRect(transitionEnd, 0, width - transitionEnd, height);
int cubeCountY = height / ImageCreator.CUBE_DIMENSION;
int cubeCountX = 1 + (transitionEnd - transitionStart)
/ ImageCreator.CUBE_DIMENSION;
int cubeStartY = (height % ImageCreator.CUBE_DIMENSION) / 2;
int cubeStartX = transitionStart
- (ImageCreator.CUBE_DIMENSION - ((transitionEnd - transitionStart) % ImageCreator.CUBE_DIMENSION));
for (int col = 0; col < cubeCountX; col++) {
for (int row = 0; row < cubeCountY; row++) {
// 随机放置色块
if (Math.random() < 0.5) {
continue;
}
// 使用插值方法产生颜色,结果看起来和随机产生的差不多
double coef = 1.0 - (((double) col / (double) cubeCountX) + 0.9 * (Math
.random() - 0.5));
coef = Math.max(0.0, coef);
coef = Math.min(1.0, coef);
// 计算 RGB
int r = (int) (coef * leftColor.getRed() + (1.0 - coef)
* rightColor.getRed());
int g = (int) (coef * leftColor.getGreen() + (1.0 - coef)
* rightColor.getGreen());
int b = (int) (coef * leftColor.getBlue() + (1.0 - coef)
* rightColor.getBlue());
// 填充色块
graphics.setColor(new Color(r, g, b));
graphics.fillRect(cubeStartX + col
* ImageCreator.CUBE_DIMENSION, cubeStartY + row
* ImageCreator.CUBE_DIMENSION,
ImageCreator.CUBE_DIMENSION,
ImageCreator.CUBE_DIMENSION);
// 绘置色块边框
graphics.setColor(new Color(255 - (int) (0.95 * (255 - r)),
255 - (int) (0.9 * (255 - g)),
255 - (int) (0.9 * (255 - b))));
graphics.drawRect(cubeStartX + col
* ImageCreator.CUBE_DIMENSION, cubeStartY + row
* ImageCreator.CUBE_DIMENSION,
ImageCreator.CUBE_DIMENSION,
ImageCreator.CUBE_DIMENSION);
}
}
return image;
}
}
|
相关推荐
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
利用了按钮重绘的原理,没有用DrawItem(),而是利用Timer,每次间隔时间段的来绘制,程序利用了缓冲绘图技术,先在内存中绘制好,然后再将这张图贴上去,避免了我们经常遇到绘图闪烁的问题,控件产生了向左移动的...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
Java右键弹出菜单源码 简单 Java圆形按钮实例代码,含注释 两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟 用JAVA编写的指针式圆形电子钟,效果图如下所示,...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...