[英]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.