ARGB顏色快速取大對比度色(保留原本透明度)

2021-08-22 10:08:45 字數 650 閱讀 6262

專案中為了使對字型對比背景色可以產生較大差異,讓字型隨著背景色的變化不會出現看不清的情況,需要根據背景來更換字型顏色。設背景的顏色儲存在乙個argb int變數bgcolor中,alpha透明度、red、green、blue均是255級變換(0x00~0xff),對比色變換後顏色儲存在textcolor中,那麼變換方式便是:

int textcolor  = 0x00ffffff ^ bgcolor;  //argb,不要乾掉透明度,只和背景色取個反色
該**的意義是:

1、先設定顏色為0x00ffffff(完全透明的白色)

2、進行異或運算,最前面的8bit透明度值和8bit的00進行xor異或之後,會重新得到它本來的值(xor只有兩個運算值不同才得1,其餘都是0),也就是保留原本背景的透明度

3、透明度8bit後面8bit * 3 = 24bit紅綠藍值,通過對ffffff進行xor運算即可取得它的對比色,例如白色ffffff對ffffff異或得黑色000000;黑色000000對ffffff異或得白色ffffff;紅色ff0000 xor ffffff = 藍綠色00ffff; 紫色ff00ff xor ffffff = (綠色)00ff00

至此,無論背景顏色使用者選什麼,字型顏色都會呈現較大的反差,從而實現字型隨背景顏色變化依然清晰可見的需求。

顏色ARGB的混合

alpha 透明度混合演算法,網上收集整理,分成以下三種 一 r1,g1,b1,alpha1 為前景顏色值 混合顏色 上圖層 r2,g2,b2,alpha2 為背景顏色值 混合顏色 下圖層 則 顏色值 r r1 alpha1 r2 alpha2 1 alpha1 g g1 alpha1 g2 alp...

c 中獲取顏色的argb值

c 中獲取顏色的argb值 顏色有4個要素,a alpha,透明度 r red,紅色成分 g green,綠色成分 b blue,藍色成分 都是byte型別的,把他們合到乙個int32中就可以了.舉例 int mycolor color c color.red 自己設定想要的某個顏色。mycolor...

快速冪 快速冪取模

快速冪的思想在於快速求解高冪指數的冪運算 複雜度為o log2n 與樸素運算相比有很大的改進 接下來給出 其中有詳解 include include using namespace std typedef long long ll ll pow1 int a,int b 最常規的方法 將冪指數轉化為...