动机
我想找到一种方法来采取任意颜色并使其变暗一些阴影,这样我就可以以编程方式创建从一种颜色到较轻版本的漂亮渐变.渐变将用作UI中的背景.
可能性1
显然,我可以将RGB值分开并逐个增加一定量.这实际上是我想要的吗?
可能性2
我的第二个想法是将RGB转换为HSV/HSB/HSL(色调,饱和度,值/亮度/亮度),稍微增加亮度,稍微降低饱和度,然后将其转换回RGB.这一般会产生预期的效果吗?
给定系统或用户的任何色调的源颜色,我想要一个简单的算法,我可以用来计算所选颜色的较浅或较暗的变体.与Windows Live Messenger上用于为用户界面设置样式的效果类似.
语言是C#,.net 3.5.
回应评论:颜色格式为(Alpha)RGB.值为字节或浮点数.
标记答案:对于我使用的上下文(一些简单的UI效果),我标记为已接受的答案实际上是此上下文中最简单的.但是,我已经放弃了对更复杂和准确答案的投票.任何进行更高级颜色操作并在将来找到此线程的人都应该检查出来.谢谢你.:)
我想将现有颜色变暗以用于渐变画笔.请问有人告诉我该怎么做?
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) 所以,如果我有一个文本"点击我为变亮",有一些深绿色的十六进制颜色,如"#00801a"的CSS颜色属性我想使它这样,当我点击它,它使一个浅绿色.同样,如果它是一些蓝色,点击它会使它变成浅蓝色.基本上我想知道是否有办法在不知道实际颜色的情况下改变css颜色.