鉴于其变种百分比,我正在尝试获取十六进制颜色的变种。例如,我的十六进制颜色是#FFFFFF,我需要找到五个变体,其中95%是#F2F2F2,85%是#D9D9D9,75%是#BFBFBF,65%是#A6A6A6,50%是#808080。我如何以编程方式计算这个?如何根据百分比提高或降低颜色代码的亮度?
尝试了代码段:
void brighten(int color, float fraction) {
int r = Color.red(color);
int g = Color.green(color);
int b = Color.blue(color);
r += (int) (fraction * (255 - r));
g += (int) (fraction * (255 - g));
b += (int) (fraction * (255 - b));
if (r < 0) {
r = 0;
}
if (r > 255) {
r = 255;
}
if (g < 0) {
g = 0;
}
if (g > 255) {
g = 255;
}
if (b < 0) {
b = 0;
}
if (b > 255) {
b = 255;
}
String resultColor = "#" + Integer.toHexString(Color.rgb((int) r, (int) g, (int) b) & 0x00ffffff);
}
此功能在某种程度上适用于颜色,因为它仅以给定的百分比变暗。但这不适用于所有颜色统一(例如:#000000)。
答案 0 :(得分:0)
使用以下方法解决您的问题。
// Function Calling
brighten(0x00FFFFFF, 65); //Para 1 : color code // Para 2 : percentage of color code that what you want.
void brighten(int color, int persontage) {
double r = Color.red(color);
double g = Color.green(color);
double b = Color.blue(color);
r = Math.ceil((r*persontage) / 100);
g = Math.ceil((g*persontage) / 100);
b = Math.ceil((b*persontage) / 100);
String resultColor = "#" + Integer.toHexString(Color.rgb((int) r, (int) g, (int) b) & 0x00ffffff);
Log.i(TAG, "brighten: resultColor : " + resultColor);
}