在wpf中设置Brush的颜色级别

时间:2013-09-06 07:24:57

标签: c# wpf brush

我正在使用我的wpf应用程序中的画笔,如下所示,我想要做的是控制颜色强度。因此,如下所示,画笔设置为绿色。但我想要做的是控制绿色的强度,以便有时它可以更亮或更厚,这取决于我传递它的值。所以如果有人可以请指教。

private readonly Pen P = new Pen(Brushes.Green, 6);

4 个答案:

答案 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标记扩展以使颜色变浅/变暗。