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