如何在C#中突出显示给定的颜色

Dan*_*lba 0 .net c# drawing winforms

我怎样才能在C#中突出显示给定的颜色.用户为我正在显示的对象选择任意颜色.当我选择对象时,我想突出显示它们.

你知道最好的方法是什么吗?

我需要这样的东西:

private Color HighLight(Color c)
{
  //calculate a highlight color from c
  return highlighted;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

Cod*_*ray 5

突出显示项目的标准方法是使用系统突出显示颜色.

您可以使用该SystemColors.Highlight属性访问该属性,该属性返回Color与操作系统用于所选项目的背景颜色相对应的结构.

这样做的主要好处是用户立即将对象识别为突出显示.选择任意颜色并不一定意味着你想要的意思.与计算机上的所有其他程序保持一致将大大提高软件的可用性和用户体验.


编辑:如果你真的坚持使用原始颜色的减轻版本作为高亮颜色,最好的计算方法是将起始颜色转换为另一种颜色空间,如HSV.RGB空间并非真正用于颜色操作,并且减轻颜色的3个RGB组件值并不总能产生您期望的颜色.我在这里为此转换提供示例代码.

将颜色转换为HSV颜色空间后,只需增加其V(或"值")属性即可使其变亮,然后将其转换回RGB颜色.有一种内置方法可以Color从RGB组件值创建结构:Color.FromArgb

请注意,HSV颜色空间称为HSB(其中"值"更改为"亮度").它们在各方面都完全相同.然而,这不是相同的色彩空间,因为HSL L代表"轻盈".维基百科的文章为好奇者提供了更多信息.