簡體   English   中英

如何在Java中使用整數值修改ARGB十六進制值的alpha

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM