【问题标题】:alpha + RGB -> ARGB?阿尔法 + RGB -> ARGB?
【发布时间】:2009-07-19 14:41:54
【问题描述】:

在 as3 中,是否有将 RGB 颜色(例如 0xFF0000)和 alpha 值(例如 .5)转换为 32 位 ARGB 值的实用程序或函数?

从 ARGB 到 RGB + alpha?

一些解释:位图数据可以在其构造函数中采用 ARGB 值,但在精灵中填充形状通常采用 RGB 值。我希望上述实用程序能够确保颜色匹配。

【问题讨论】:

    标签: flash actionscript-3 rgb


    【解决方案1】:

    var argb  : int = (alpha<<24)|rgb;
    var rgb   : int = 0xFFFFFF & argb;
    var alpha : int = (argb>>24)&0xFF;

    【讨论】:

      【解决方案2】:

      A、R、G、B 是视频卡常用的格式,用于实现“纹理混合”和纹理透明度。大多数系统只对 R、G 和 B 使用 8 位,因此在 PC 中常见的 32 位字长之外还有另外 8 位可用。

      The mapping is:
      
      For Bits:
      33222222 22221111 11111100 00000000
      10987654 32109876 54321098 76543210
      
      AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
      00000000 RRRRRRRR GGGGGGGG BBBBBBBB
      

      类似这样的:

      private function toARGB(rgb:uint, newAlpha:uint):uint{
        var argb:uint = 0;
        argb = (rgb);
        argb += (newAlpha<<24);
        return argb;
      }
      
      private function toRGB(argb:uint):uint{
        var rgb:uint = 0;
        argb = (argb & 0xFFFFFF);
        return rgb;
      }
      

      【讨论】:

        【解决方案3】:

        如果 alpha 可以用 8 位表示,那是可能的。只需将 32 位 ARGB 值的每个区域映射为相应的变量,例如

        0x0ABCDEF1

        阿尔法 - 0x0A

        红色 - 0xBC

        绿色 - 0xDE

        蓝色 - 0xF1

        【讨论】:

          【解决方案4】:
          private function combineARGB(a:uint,r:uint,g:uint,b:uint):uint {
                      return ( (a << 24) | ( r << 16 ) | ( g << 8 ) | b );
                  }
          

          【讨论】:

            【解决方案5】:

            我真的无法在上面的优秀答案中添加更多内容,但是更简单地说,例如,alpha 值是 uint 中的最后两位数字

            //white
            var white:uint = 0xFFFFFF;
            
            //transparent white
            var transparent:uint = 0xFFFFFFFF;
            

            比例和往常一样,00 = 1 FF = 0。

            希望对你有帮助

            【讨论】:

            • 抱歉,您有点困惑 :)... 透明白色是 0x00FFFFFF。 alpha 值是“0x”之后的前两个数字,如 0xAARRGGBB(Alpha、Red、Green、Blue)。 “00” (0x00) 为 0,而“FF” (0xFF) 为 255,相当于 alpha=1。干杯...
            • 啊,这就是原因 ;) 干杯
            猜你喜欢
            • 2011-08-13
            • 1970-01-01
            • 2011-11-22
            • 1970-01-01
            • 1970-01-01
            • 2013-09-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多