![](/img/trans.png)
[英]Java how to change alpha, hue, saturation and brightness into argb value?
[英]How to modify the alpha of an ARGB hex value using integer values in Java
我正在開發一個項目,該項目允許用戶使用自定義滑塊調整顏色的Alpha值。 滑塊返回0到255之間的整數,該整數定義用戶希望使用的新alpha值。
問題在於顏色必須為十六進制,並且我不知道如何將0-255整數轉換為可以修改原始ARGB十六進制的十六進制整數。 我做了一些研究(例如“ 如何更改預定義的十六進制顏色的alpha? ”),但是我發現沒有任何東西可以解決我的問題。 我考慮過使用Java AWT中的Color類,但是它沒有getRGBA()方法。
/**
* Original ARGB hexadecimal
* Alpha: 255, Red: 238, Blue: 102, Green: 0
*/
int originalColor = 0xFFEE6600;
/**
* Creates a new hexadecimal ARGB color from origColor with its alpha
* replaced with the user's input (0-255)
* EX: If userInputedAlpha = 145 than the new color would be 0x91EE6600
*/
int newColor = changeAlpha(origColor, userInputedAlpha);
我需要的是changeAlpha方法,該方法使用用戶輸入的alpha(0到255之間的整數)修改color參數的alpha(這是一個十六進制整數)。
您知道alpha值存儲在第24到31位中,因此您可以執行的操作是首先應用蒙版以刪除先前的alpha值,然后再移動用戶輸入的值以將其應用於顏色。
int changeAlpha(int origColor, int userInputedAlpha) {
origColor = origColor & 0x00ffffff; //drop the previous alpha value
return (userInputedAlpha << 24) | origColor; //add the one the user inputted
}
可以很容易地減少為一個襯里:
return (origColor & 0x00ffffff) | (userInputedAlpha << 24);
似乎您對值是否為十六進制感到困擾。 整數是整數,十六進制只是一種表示法。 畢竟,我們的計算機中只有0和1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.