如何在C#中生成随机的深色颜色?

10

我通过以下方式生成随机颜色:

 var random = new Random();
 var color = String.Format("#{0:X6}", random.Next(0x1000000)); 

我该如何排除亮度高于某个特定值的颜色?


我知道这是一个老问题。如果有人需要,可以查看这个答案。https://dev59.com/cHVC5IYBdhLWcg3wZwJT#56848413 - Krish
3个回答

12

通过掩码处理结果是消除“上半部分”亮度颜色的非常简单的方法。

random.Next(0x1000000) & 0x7F7F7F

如果您执行string.Format("#{0:x}",random.Next(0x1000000) & 0x7F7F7F);,有时结果将是5个十六进制数字。不要忘记使用x6格式。 - nerijus
发生了什么?你能链接到一些文档吗? - Piotrek
如果我想摆脱暗色调,只保留明亮的颜色怎么办? - Joe

7
一种实现方法是在HSV/HSL颜色空间中生成颜色,然后转换为RGB(维基百科文章告诉你如何做到这一点)。
HSV的优点是其中一个分量(V)对应于“亮度”。因此,如果您独立随机生成H、S和V,但将V限制为较低的值,则会获得暗色。

这里有一个链接,介绍如何在C#中进行HSV到RGB颜色的转换:http://www.splinter.com.au/converting-hsv-to-rgb-colour-using-c/ - Heribert

0

您可以通过NuGet安装ColorHelper库并使用以下代码:

using ColorHelper;
RGB rgb = ColorGenerator.GetDarkRandomColor<RGB>();

你可以使用其他类别而不是RGB。例如: HEXCMYK或其他。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接