0

ユーザーが入力した16進整数を取得して、より暗くしようとしています。何か案は?

4

3 に答える 3

2

バイナリ減算を行うだけです:

int red = 0xff0000;
int darkerRed = (0xff0000 - 0x110000);
int programmaticallyDarkerRed;

ループで暗くすることもできます:

for(int i = 1; i < 15; i++)
{
    programmaticallyDarkerRed = (0xff0000 - (i * 0x110000));
}

黒に近づくほど0x000000暗くなります。

于 2012-08-01T23:26:22.033 に答える
1

私は使用しますColor.darker

Color c = Color.decode(hex).darker();

于 2012-08-01T23:22:58.053 に答える
0

16 進値を a に変換してから、オブジェクトColorを暗くすることができますColor

// Convert the hex to an color (or use what ever method you want)
Color color = Color.decode(hex);

// The fraction of darkness you want to apply
float fraction = 0.1f;

// Break the color up
int red = color.getRed();
int blue = color.getBlue();
int green = color.getGreen();
int alpha = color.getAlpha();

// Convert to hsb
float[] hsb = Color.RGBtoHSB(red, green, blue, null);
// Decrease the brightness
hsb[2] = Math.min(1f, hsb[2] * (1f - fraction));
// Re-assemble the color
Color hSBColor = Color.getHSBColor(hsb[0], hsb[1], hsb[2]);

// If you need it, you will need to reapply the alpha your self

アップデート

16進数に戻すには、次のようなものを試すことができます

int r = color.getRed();
int g = color.getGreen();
int b = color.getBlue();

String rHex = Integer.toString(r, 16);
String gHex = Integer.toString(g, 16);
String bHex = Integer.toString(b, 16);

String hexValue = (rHex.length() == 2 ? "" + rHex : "0" + rHex)
                + (gHex.length() == 2 ? "" + gHex : "0" + gHex)
                + (bHex.length() == 2 ? "" + bHex : "0" + bHex);

int intValue = Integer.parseInt(hex, 16); 

それが正しくない場合は、SOまたはGoogleの回答があるかどうかを確認します

于 2012-08-01T23:10:37.850 に答える