ユーザーが入力した16進整数を取得して、より暗くしようとしています。何か案は?
質問する
1766 次
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 に答える