我想要一個用戶輸入十六進制int並使其更暗。有任何想法嗎?需要使一個十六進制0xff ******字符串較深(* =任何十六進制字符)
回答
只是做二進制減法:
int red = 0xff0000;
int darkerRed = (0xff0000 - 0x110000);
int programmaticallyDarkerRed;
你甚至可以使其與一個循環較暗:
for(int i = 1; i < 15; i++)
{
programmaticallyDarkerRed = (0xff0000 - (i * 0x110000));
}
它得到0x000000
或黑色越近,越暗它將會。
您可能不應刪除舊的答案以發佈完全相同的副本。 – Jeffrey 2012-08-01 23:28:25
如果一個答案被拒絕投票,你應該在答案中解決問題,而不是發佈一個新問題。 – Jeffrey 2012-08-01 23:30:43
很抱歉,但沒有,它沒有工作,它適用於一些但不是所有的顏色,這裏是他們的列表:\t \t \t \t \t \t公共靜態INT紫色= 0xffCC33FF; \t public static int red = 0xffCC0000; \t public static int green = 0xff33CC33; \t public static int blue = 0xff3366FF; \t public static int yellow = 0xffFFFF66; \t public static int pink = 0xFFFF99FF; \t public static int white = 0xffFFFFFF; \t public static int black = 0xff000000; \t public static int gray = 0xff404040; \t public static int lightgrey = 0xffa0a0a0; \t public static int orange = 0xffFF9900; – user1462577 2012-08-01 23:46:51
您可以在十六進制值轉換爲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
UPDATE
拿回來爲十六進制,你可以嘗試像
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);
現在,如果這不是很對,我會看看,看看是否有任何答案的S O或谷歌
但我怎麼回到一個十六進制int? 8位 – user1462577 2012-08-01 23:41:27
我會用Color.darker
。
Color c = Color.decode(hex).darker();
但我怎麼會將它轉換回十六進制int? – user1462577 2012-08-01 23:37:06
@ user1462577您可以使用['Color.toRGB()'](http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html)爲您的argb值獲取'int' #getRGB()),然後你可以使用['Integer.toHexString()'](http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#toHexString(int) )將其轉換爲十六進制表示。 – Jeffrey 2012-08-01 23:58:13
@Downvoter謹慎解釋? – Jeffrey 2012-08-01 23:58:19
- 1. Javascript - 十進制字符串的十六進制字符串
- 2. 十六進制字符到實際十六進制字符的字符串
- 3. SQL十六進制字符串比較
- 4. 轉換十六進制字符串十六進制值
- 5. 將字符串轉換爲十六進制到十六進制
- 6. 十六進制字符串到十六進制整數
- 7. python字符串與十六進制轉義十六進制值
- 8. 字符串爲十六進制和十六進制轉換爲字符串
- 9. PHP將字符串轉換爲十六進制和十六進制字符串
- 10. 從十六進制字符串轉換爲十六進制字符數組
- 11. 從十六進制字符
- 12. 十六進制字符?
- 13. 十六進制字符
- 14. 十六進制串&十六進制
- 15. 如何將十六進制字符串轉換爲十六進制字節?
- 16. C++將十六進制字符串轉換爲十六進制char *十六進制數字
- 17. 比較十六進制字符陣列
- 18. 在C++中將十六進制十六進制字符標記爲十進制
- 19. 如何將十六進制字符串轉換爲十進制?
- 20. 十六進制字符串到二進制字符串
- 21. 二進制字符串到十六進制字符串java
- 22. Ruby:十六進制字符串到二進制字符串
- 23. 十六進制值的字符串格式爲十六進制數字排序
- 24. C#字符串爲十六進制,十六進制到字節轉換
- 25. 十六進制字符串wireshark pcap
- 26. 字符串到十六進制
- 27. SHA1哈希十六進制字符串
- 28. JAVA轉換十六進制字符串
- 29. 僅顯示十六進制字符串
- 30. 打印長十六進制字符串
你必須給出一些上下文。數字本身並沒有「黑暗」屬性。 7不會比13或0xff356483更深。 – Eclipse 2012-08-01 23:02:18
你是否有6字節RRGGBB格式的顏色,你想在保持色調/飽和度的同時降低強度? – 2012-08-01 23:09:07
您的意思是說:「給定一個RGB顏色作爲十六進制數,將其轉換爲代表'較暗'顏色的新十六進制數」?如果是這樣,「黑暗」是什麼意思?如果顏色已經很暗,如0x00202020怎麼辦? – 2012-08-01 23:09:53