首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >alpha + RGB -> ARGB?

alpha + RGB -> ARGB?
EN

Stack Overflow用户
提问于 2009-07-19 14:41:54
回答 5查看 16.4K关注 0票数 6

在as3中,是否有一个实用程序或函数可以将RGB色(例如0xFF0000)和Alpha值(例如.5)转换为A32位ARGB值?

从ARGB到RGB + alpha?

一些解释: bitmapdata可以在其构造函数中接受ARGB值,但在sprites中填充形状通常需要RGB值。我想前面提到的实用程序,以确保颜色匹配。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-19 14:47:03

var argb  : int = (alpha<<24)|rgb;

var rgb   : int = 0xFFFFFF & argb;

var alpha : int = (argb>>24)&0xFF;

票数 23
EN

Stack Overflow用户

发布于 2009-07-19 16:03:19

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

代码语言:javascript
复制
The mapping is:

For Bits:
33222222 22221111 11111100 00000000
10987654 32109876 54321098 76543210

AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
00000000 RRRRRRRR GGGGGGGG BBBBBBBB

如下所示:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2009-07-19 14:47:12

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

0x0ABCDEF1

alpha - 0x0A

红色- 0xBC

绿色- 0xDE

蓝色- 0xF1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1150046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档