[英]How to create an ARGB_8888 pixel value?
看来RGBA像素格式已被很好地记录下来,我假设这就是Android文档的含义,只是使用一个不同的名称来匹配bit字段中的通道成员资格位置:
这样的事情应该起作用:
int createPixel(int r, int g, int b) {
return createPixel(r, g, b, 0xff);
}
int createPixel(int r, int g, int b, int a) {
return (a<<24) | (r<<16) | (g<<8) | b;
}
另外,您可能希望使用byte
而不是int
以避免溢出类型错误,或仅屏蔽所需的位:
int createPixel(int r, int g, int b, int a) {
return ((a & 0xff) << 24)
| ((r & 0xff) << 16)
| ((g & 0xff) << 8)
| ((b & 0xff));
}
尽管将值限制为[0,255]
可能更有意义。
从文档 :
(alpha << 24) | (red << 16) | (green << 8) | blue
首先,您的参数应该是字节,而不是整数,但是我想这可能是实现问题。
一般来说,您会做类似的事情
return b | r<<8 | g<<16 | 255<<24;
假设您的Alpha为255(非透明)。
这应该工作:
int createPixel(int r, int g, int b)
{
return 0xff000000 | (r << 16) | (g << 8) | b;
}
或者,如果您想成为巴洛克风格:
int createPixel(int r, int g, int b)
{
return (((((-1 << 8) | r) << 8) | g) << 8) | b;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.