我想将现有颜色变暗以用于渐变画笔.请问有人告诉我该怎么做?
C#,.net 2.0,GDI +
Color AdjustBrightness(Color c1, float factor)
{
float r = ((c1.R * factor) > 255) ? 255 : (c1.R * factor);
float g = ((c1.G * factor) > 255) ? 255 : (c1.G * factor);
float b = ((c1.B * factor) > 255) ? 255 : (c1.B * factor);
Color c = Color.FromArgb(c1.A,(int)r, (int)g, (int)b);
return c ;
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 29
作为一种简单的方法,您可以只考虑RGB值:
Color c1 = Color.Red;
Color c2 = Color.FromArgb(c1.A,
(int)(c1.R * 0.8), (int)(c1.G * 0.8), (int)(c1.B * 0.8));
Run Code Online (Sandbox Code Playgroud)
(应该使它变暗;或者,例如,*1.25使其变亮)
小智 20
你也可以尝试使用
ControlPaint.Light(baseColor, percOfLightLight)
Run Code Online (Sandbox Code Playgroud)
要么
ControlPaint.Dark(baseColor, percOfDarkDark)
Run Code Online (Sandbox Code Playgroud)
以下是Richard提到的转换的一些C#代码:
虽然上述方法确实使颜色变暗,但它们将色调调整得太多,因此结果看起来不太好。最好的答案是使用Rich Newman 的 HSLColor类并调整亮度。
public Color Darken(Color color, double darkenAmount) {
HSLColor hslColor = new HSLColor(color);
hslColor.Luminosity *= darkenAmount; // 0 to 1
return hslColor;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43700 次 |
| 最近记录: |