|
<火山程序 类型 = "通常" 版本 = 1 />
方法 调整颜色的亮度 <公开 类型 = 整数 折叠>
参数 red <类型 = 整数 注释 = "红">
参数 green <类型 = 整数 注释 = "绿">
参数 blue <类型 = 整数 注释 = "蓝">
{
// 计算新的亮度值
@ double brightness = 0.299 * @<red> + 0.587 * @<green> + 0.114 * @<blue>;
// 根据调整因子调整亮度
// @ brightness += @<adjustmentFactor> * 255;
@ double adjustmentFactor = brightness >= 128 ? -0.2 : 0.2;
// 确保亮度值在合法范围内
@ brightness = Math.max(0, Math.min(255, brightness));
变量 adjustmentFactor2 <类型 = 小数 注释 = "// 调整因子可根据需要进行调整">
@ @<adjustmentFactor2>=adjustmentFactor;
red = adjustChannelBrightness (red, adjustmentFactor2)
green = adjustChannelBrightness (green, adjustmentFactor2)
blue = adjustChannelBrightness (blue, adjustmentFactor2)
// 调整字体颜色以确保可见性
@ if (brightness < 128) {
@ @<red> = 255 - @<red>;
@ @<green> = 255 - @<green>;
@ @<blue> = 255 - @<blue>;
@ }
// 确保通道值在合法范围内
@ @<red> = Math.max(0, Math.min(255, @<red>));
@ @<green> = Math.max(0, Math.min(255, @<green>));
@ @<blue> = Math.max(0, Math.min(255, @<blue>));
返回 (颜色类.RGB到颜色值 (red, green, blue))
}
方法 adjustChannelBrightness <公开 类型 = 整数 折叠 @禁止流程检查 = 真>
参数 channelValue <类型 = 整数>
参数 adjustmentFactor <类型 = 小数>
{
@ int adjustedValue = (int) (@<channelValue> + @<adjustmentFactor> * 255);
@ return Math.max(0, Math.min(255, adjustedValue));
}
|
|