我正在使用我的wpf应用程序中的画笔,如下所示,我想要做的是控制颜色强度。因此,如下所示,画笔设置为绿色。但我想要做的是控制绿色的强度,以便有时它可以更亮或更厚,这取决于我传递它的值。所以如果有人可以请指教。
private readonly Pen P = new Pen(Brushes.Green, 6);
答案 0 :(得分:2)
您可以创建自己的画笔:
private readonly Pen p = new Pen(new SolidColorBrush(Color.FromARGB(...)), 6);
然后,您可以通过将Alpha,红色,绿色和蓝色组件传递到Color.FromARGB
来准确定义颜色。
答案 1 :(得分:1)
一个简单的解决方案就是操纵绿色的A值,如下所示:
int a = yourAValue;
private readonly Pen p = new Pen(new SolidColorBrush(Color.FromARGB(a,0,255,0)), 6);
现在您可以通过更改a值来更改颜色强度;
答案 2 :(得分:1)
您可以使用HSL颜色模型而不是RGB。 RGB适用于显示器,因为它基于混合三原色光。但是,它不适合人体模型。
HSL的元素是色调,饱和度和亮度。这符合我们描述现实生活中颜色的方式。调整色调会改变颜色 - 保持色调相同,修改其他元素会产生不同的颜色,但人们会认为这种颜色是相关的。
改变饱和度会改变颜色的深度。饱和度为零会消除颜色,最终会出现灰度。饱和度越高,颜色越鲜艳。它的轻盈就是它所说的。零度的亮度总是给出黑色。最大值的亮度是白色。在两个极端之间是你的颜色。
不幸的是,WPF / .NET本身不支持HSL。但是,创建自己的RGB和HSL之间的转换方法非常容易。在您的情况下,这可能适用于方法或值转换器。
我在我的网站上写了一篇关于转换的文章。还有一个可下载的示例和转换源代码,您可以免费使用(如果出现问题,您必须保证不起诉我!)。它位于http://www.blackwasp.co.uk/RGBHSL.aspx
答案 3 :(得分:0)
请参阅this blog post了解WPF的HSL Color实现,以及XAML标记扩展以使颜色变浅/变暗。