2

根据文档,此构造函数存在:

public Color(int rgba,
         boolean hasalpha)

但是,鉴于 java 没有无符号整数,我看不到如何使用它来创建Color(255,255,255,255)(eg ) 的等价物。0xFFFFFFFF

您如何将此构造函数用于“大”颜色?

编辑

显然可以使用构造函数(惊喜),但是像这样解析 RGBa 颜色字符串会失败:

    int x = Integer.parseInt("0xFFFFFFFF", 16); // Number format error
    Color c = new Color(x, true);

解决方案似乎是使用 BigInteger 进行解析。对不起,误导的问题!

4

2 回答 2

5

您的问题没有误导,但您似乎误解了 Kon 的回答:

您对 Java 的 Integer 一直被签名是正确的,但这并不意味着该数字中的信息位较少。

创建颜色时:

new Color(255, 255, 255, 255)

它与使用相同:

new Color(0xFFFFFFFF, true)

或使用:

new Color(0b11111111111111111111111111111111, true)

0xFFFFFFFF实际上是-1,但这并不意味着任何位都会发生变化;这只是代表的问题。Color只是为每个颜色分量剪掉了必要的位。

因此,实际上,您可以使用以下方法创建所需的颜色:

Color c = new Color(-1,true);
System.out.println(c);
System.out.println(c.getAlpha());

产生:

java.awt.Color[r=255,g=255,b=255]
255
于 2013-08-15T03:04:13.183 回答
2

去二进制。

颜色 c = 新颜色(0b1111111111111111111111111111111,真);

根据 Java 文档,“alpha 分量在 24-31 位,红色分量在 16-23 位,绿色分量在 8-15 位,蓝色分量在 0-7 位”

于 2013-08-15T02:14:43.627 回答