首页 文章

六角透明颜色[复制]

提问于
浏览
1029

这个问题在这里已有答案:

我正在为我的app小部件实现一个小部件透明度选项,尽管我在获取正确的十六进制颜色值时遇到了一些麻烦 . 作为十六进制颜色透明度的全新,我搜索了一下,虽然我找不到我的问题的具体答案 .

我想用十六进制颜色设置透明度,所以让我说我的十六进制颜色ID“#33b5e5”,我希望它是50%透明 . 然后我将使用“#8033b5e5”因为80是50% .

我在这里找到了一个有用的图表:http://www.dtp-aus.com/hexadeci.htm . 有了这些数据,我设法得到了这个:

0% = #00
10% = #16
20% = #32
30% = #48
40% = #64
50% = #80
60% = #96
70% = #112
80% = #128
90% = #144

现在,当我以十六进制高于100时问题开始出现 . 十六进制颜色代码只能长8个符号吗?例如#11233b5e5(80%)崩溃 .

我能做些什么才能让我使用更高的数字呢?

10 回答

  • 21

    使用python来计算它,例如(用python 3编写),50%透明度:

    hex(round(256*0.50))
    

    :)

  • 3191

    我为Android应用程序构建了这个小帮助方法,可能会有用:

    /**
     * @param originalColor color, without alpha
     * @param alpha         from 0.0 to 1.0
     * @return
     */
    public static String addAlpha(String originalColor, double alpha) {
        long alphaFixed = Math.round(alpha * 255);
        String alphaHex = Long.toHexString(alphaFixed);
        if (alphaHex.length() == 1) {
            alphaHex = "0" + alphaHex;
        }
        originalColor = originalColor.replace("#", "#" + alphaHex);
    
    
        return originalColor;
    }
    
  • 6

    enter image description here

    这可能是非常晚的答案..但这个图表杀了它 .

    所有百分比值都映射到十六进制值 .

    http://online.sfsu.edu/chrism/hexval.html

  • 1

    在谷歌搜索(或click here)上试试这个

    255 * .2 to hex

    结果会产生 0x33 .

    但是,谷歌不会舍入值,因此您只能使用1位乘数 . 如果你想使用说.85,你必须首先获得255 * .85的舍入值,然后在谷歌搜索中输入 (rounded-value here) to hex .

  • 16

    颜色十六进制表示法如下:#AARRGGBB

    • 答:阿尔法

    • R:红色

    • G:绿色

    • B:蓝色

    你应该先看看hexadecimal的工作原理 . 你最多可以写FF .

  • -1

    这是一个十六进制值百分比的正确表 . 例如 . 对于50%的白色你会使用#80FFFFFF .

    • 100% - FF

    • 95% - F2

    • 90% - E6

    • 85% - D9

    • 80% - CC

    • 75% - BF

    • 70% - B3

    • 65% - A6

    • 60% - 99

    • 55% - 8C

    • 50% - 80

    • 45% - 73

    • 40% - 66

    • 35% - 59

    • 30% - 4D

    • 25% - 40

    • 20% - 33

    • 15% - 26

    • 10% - 1A

    • 5% - 0D

    • 0% - 00

    source

  • 103

    我意识到这是一个老问题,但我在做类似的事情时遇到过它 .

    使用SASS,您可以非常优雅地将RGBA转换为十六进制ARGB: ie-hex-str . 我在这里用它来混合 .

    @mixin ie8-rgba ($r, $g, $b, $a){
        $rgba: rgba($r, $g, $b, $a);
        $ie8-rgba: ie-hex-str($rgba);
        .lt-ie9 &{
          background-color: transparent;
          filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#{$ie8-rgba}', endColorstr='#{$ie8-rgba}');
      }
    }
    
    .transparent{
        @include ie8-rgba(88,153,131,.8);
        background-color: rgba(88,153,131,.8);
    }
    

    输出:

    .transparent {
      background-color: rgba(88, 153, 131, 0.8);
    }
    .lt-ie9 .transparent {
      background-color: transparent;
      filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#CC589983', endColorstr='#CC589983');
      zoom: 1;
    }
    
  • 2

    我总是来这里检查int / hex alpha值 . 因此,最终在我的java utils类中创建一个简单的方法 . 此方法将百分比转换为十六进制值并附加到颜色代码字符串值 .

    public static String setColorAlpha(int percentage, String colorCode){
        double decValue = ((double)percentage / 100) * 255;
        String rawHexColor = colorCode.replace("#","");
        StringBuilder str = new StringBuilder(rawHexColor);
    
        if(Integer.toHexString((int)decValue).length() == 1)
            str.insert(0, "#0" + Integer.toHexString((int)decValue));
        else
            str.insert(0, "#" + Integer.toHexString((int)decValue));
        return str.toString();
    }
    

    所以, Utils.setColorAlpha(30, "#000000") 会给你 #4c000000

  • 28

    简答

    您可以在https://play.golang.org/p/l1JaPYFzDkI中查看十六进制值的完整百分比表和 run 此操场中的代码 .

    伪代码的简短说明

    十六进制值的百分比

    • decimal =百分比* 255/100 . 例如:十进制= 50 * 255/100 = 127.5

    • decimal 转换为十六进制值 . 例如:十进制127.5 = 7 * 161 15 =十六进制7F

    十六进制值为百分比

    • 将hexaxdecimal值转换为decimal . 例如:D6 = 13 * 161 6 = 214

    • percentage =(十进制值)* 100/255 . 例如:214 * 100/255 = 84%

    More infos for the conversion decimal <=> hexadecimal

    答案:如何在脑海中计算

    问题可以通过cross multiplication来解决 .

    我们有一个百分比(范围从0到100)和另一个数字(范围从0到255)然后转换为十六进制 .

    • 100 <==> 255(以十六进制表示的FF)

    • 0 <==> 0(十六进制00)

    1%

    • 1 * 255/100 = 2,5
      如果你向下舍入,则
    • 2,5 in hexa是 2 .

    2%

    • 2 * 255/100 = 5
      hexa中的
    • 5是 5 .

    最佳答案中的表格给出了5%的逐步百分比 .

    如何计算你头脑中的数字?由于 2.5 增量,将第2个添加到第一个,将3添加到下一个

    • 95% - F2 //开始

    • 96% - F4 //将2添加到F2

    • 97% - F7 //添加3 . 或F2 5 = F7

    • 98% - F9 //加2

    • 99% - FC //添加3. 9 3 = 12以十六进制:C

    • 100% - FF //加2


    我更喜欢教如何找到解决方案而不是交 table

    给一个人一条鱼,你喂他一天;教一个人钓鱼,你喂他一辈子

  • 16

    该图表未显示百分比 . “#90”不是“90%” . 该图表显示十六进制到十进制的转换 . 十六进制数90(通常表示为0x90)等于十进制数144 .

    十六进制数字是base-16,因此每个数字都是0到F之间的值 . 双字节十六进制值的最大值(例如颜色的透明度)是0xFF,或十进制的255 . 因此100%是0xFF .

相关问题