5

アプリケーションには、ユーザーが ARGB カラーを変更できるスライダーがいくつかありますが、これらの値を 0xff000000 のような 16 進数の値 (黒一色) に変換する必要があります。

これは私がこれまでに持っているものです:

protected int toHex(Color col) {
    String as = pad(Integer.toHexString(col.getAlpha()));
    String rs = pad(Integer.toHexString(col.getRed()));
    String gs = pad(Integer.toHexString(col.getGreen()));
    String bs = pad(Integer.toHexString(col.getBlue()));
    String hex = "0x" + as + rs + gs + bs;
    return Integer.parseInt(hex, 16);
}

private static final String pad(String s) {
    return (s.length() == 1) ? "0" + s : s;
}

ただし、以下のような整数値を取得すると、入力文字列 "0xccffffff" に対して NumberFormatException が発生します。

int color = toHex(new Color(153f, 153f, 153f, 0.80f));

これを整数にする方法についてのアイデアはありますか? ありがとう。

4

2 に答える 2

4

Color パラメーターは、1f から 0f の間の浮動小数点数でなければなりません。したがって、これは有効な色です。

int color = toHex(new Color(1f, 1f, 1f, 1f));

これは白です。

于 2012-05-05T07:48:57.827 に答える