Int argb color output strange value
我正在尝试使用随机颜色创建小应用程序。
1 2 3 4
| Random rnd = new Random();
int color1 = Color. argb(255, rnd. nextInt(256), rnd. nextInt(256), rnd. nextInt(256));
int color2 = Color. argb(255, rnd. nextInt(256), rnd. nextInt(256), rnd. nextInt(256));
int color3 = Color. argb(255, rnd. nextInt(256), rnd. nextInt(256), rnd. nextInt(256)); |
但是在color1,color2和color3中保存了诸如"-11338194"之类的值。 是否可以采用argb值? (如"255255255255"之类的东西)谢谢!
-
考虑一下32位整数由-11338194表示...然后计算它的4个8位值是什么......
-
@JonSkeet,ghm。 字节b =(字节)color1不起作用。 对不起,我刚学会编码
-
那么你必须定义"不起作用"才有意义......目前尚不清楚你的期望。
-
@JonSkeet,当我试图转换成byte时有这个值:(color1 = -9003271,字节值是-7)
-
是的,但目前尚不清楚你的预期是什么或为什么。
-
@JonSkeet,我正在尝试获取argb值,例如"255 255 255 255"或等于
-
stackoverflow.com/a/18037185/6525469这是rgb值存储在int中的方式。 您可以使用stackoverflow.com/a/28111503/6525469恢复
-
@SakchhamSharma谢谢!! 它的工作完美!
Java颜色由ARGB格式的32位整数表示。
这意味着最高的8位是alpha值,255表示完全不透明度,而0表示透明度。 您生成alpha值为255的颜色。
整数是带符号的数字,其最重要的位表示它是否为负数。 当您将所有前8位设置为1时,如果将其打印到屏幕上,则所有颜色都将为负数。
例:
1 2 3 4 5
| System. err. println("Color="+new java. awt. Color(0, 0, 255, 0). getRGB());
gives 255 as you expected - note that this is a fully transparent blue
System. err. println("Color="+java. awt. Color. RED. getRGB());
gives -65536, as the alpha channel value is 255 making the int negative. |
如果您只想查看RGB值,只需执行逻辑AND以截断使十进制数字表示为负的Alpha通道位:
1 2
| System. err. println("Color="+(java. awt. Color. RED. getRGB() & 0xffffff ));
gives you 16711680 |
或者,您可以使用十六进制表示颜色:
1 2
| System. err. println("Color="+String. format("%X",java. awt. Color. RED. getRGB() & 0xffffff ));
which gives FF0000 |
-
(此示例来自桌面JavaSE,您可能会发现Android中的细微差别。)
试试这段代码,
1 2 3 4
| Random rnd = new Random();
int color1 = Color. argb(255, rnd. nextInt(256 - 0), rnd. nextInt(256 - 0), rnd. nextInt(256 - 0));
int color2 = Color. argb(255, rnd. nextInt(256 - 0), rnd. nextInt(256 - 0), rnd. nextInt(256 - 0));
int color3 = Color. argb(255, rnd. nextInt(256 - 0), rnd. nextInt(256 - 0), rnd. nextInt(256 - 0)); |
Color.argb()的参考
生成范围之间的随机数
-
谢谢! 但它没有改变任何东西:(
-
@Dimitry仍然产生负值?
-
是的,它仍然会产生负面的奇怪值
-
试一试mkyong.com/java/java-generate-random-integers-in-a-range