现在的位置: 首页 > 综合 > 正文

java 字体颜色转换工具类 ColorUtil

2018年01月27日 ⁄ 综合 ⁄ 共 1496字 ⁄ 字号 评论关闭
import java.awt.Color;
import jxl.format.Colour;

/**
 *字体颜色转换工具类
 * @author tanghui
 *
 */
public class ColorUtil {

	// 把字符串表达的颜色值转换成java.awt.Color
	public static Color parseToColor(String c) {
		Color convertedColor = Color.ORANGE;
		try {
			convertedColor = new Color(Integer.parseInt(c, 16));
		} catch (NumberFormatException e) {
			e.getStackTrace();
		}
		return convertedColor;
	}
	
	public static Colour getNearestColour(Color awtColor) {
		Colour color = null;
		Colour[] colors = Colour.getAllColours();
		if ((colors != null) && (colors.length > 0)) {
			Colour crtColor = null;
			int[] rgb = null;
			int diff = 0;
			int minDiff = 999;
			for (int i = 0; i < colors.length; i++) {
				crtColor = colors[i];
				rgb = new int[3];
				rgb[0] = crtColor.getDefaultRGB().getRed();
				rgb[1] = crtColor.getDefaultRGB().getGreen();
				rgb[2] = crtColor.getDefaultRGB().getBlue();
				diff = Math.abs(rgb[0] - awtColor.getRed())
				+ Math.abs(rgb[1] - awtColor.getGreen())
				+ Math.abs(rgb[2] - awtColor.getBlue());
				if (diff < minDiff) {
					minDiff = diff;
					color = crtColor;
				}
			}
		}
		if (color == null)
			color = Colour.BLACK;
		return color;
	}

	// Color转换为16进制显示
	public static String toHexEncoding(Color color) {
		String R, G, B;
		StringBuffer sb = new StringBuffer();
		R = Integer.toHexString(color.getRed());
		G = Integer.toHexString(color.getGreen());
		B = Integer.toHexString(color.getBlue());
		R = R.length() == 1 ? "0" + R : R;
		G = G.length() == 1 ? "0" + G : G;
		B = B.length() == 1 ? "0" + B : B;
		sb.append("0x");
		sb.append(R);
		sb.append(G);
		sb.append(B);
		return sb.toString();
	}

	public static Colour getColour(final String c) {
		Color cl = parseToColor(c);
		return getNearestColour(cl);
	}

	//测试
	public static void main(String[] args){
//		Color cs = ColorUtil.parseToColor("6026FF");
//		System.out.println(cs);
	}

}

抱歉!评论已关闭.