【问题标题】:How can I get a list of visually distinct colors?如何获得视觉上不同颜色的列表?
【发布时间】:2011-07-22 00:57:24
【问题描述】:

我需要分配颜色来区分不同的项目。简单案例:根据客户订购不同颜色的行。

我不想让用户为每个客户选择一种颜色,我想在运行时这样做。

如果有一个客户我会用“red”,如果有两个“red”和“white”,...

当然,我可以创建自己的 GimmeRandomColour(i: index) 函数,该函数使用 iRGB 函数来创建良好的随机颜色(但在这种情况下,创建漂亮的颜色可能会很棘手)。或者我可以说如果i 为 0,请给我 clRed,...(这样创建多种颜色可能是个问题)。

如何获得具有可接受对比度的“良好颜色列表”?

【问题讨论】:

  • 不是开箱即用的。这太具体了,无法为其提供内置函数。
  • 创建您自己的调色板并使用无替换的随机抽样。

标签: delphi colors color-palette


【解决方案1】:

Delphi 中没有内置函数。 有关生成令人愉悦的配色方案的方法,请参阅此问题。

Algorithm to randomly generate an aesthetically-pleasing color palette

【讨论】:

  • 不错的链接,但正如我在问题末尾所写的那样,“随机”是不正确的。对于给定的 i 值,我希望始终使用相同的颜色。类似于 case i of 0 结果 := clRed; 1 个结果:= clBlue; 2 ...但我想要一些对 i = 100 也有意义的东西,即使实际上我会将它用于 i
  • @user193655 为了始终为给定的 I 获得相同的值,对于每个不同的值,我使用随机建议的算法生成新颜色并将该颜色与特定的 I 绑定,因此您可以获得相同的值颜色与随后的 getColorFor(I) 调用。如果您想为不同的程序运行获得相同的颜色,请将 I=ColorValue 绑定存储在数据库、注册表、Ini 或配置文件中。
  • @user193655 - 该问题的(当前)第 6 个答案提供了一篇关于使用“黄金角”生成颜色的文章的链接。 martin.ankerl.com/2009/12/09/…
【解决方案2】:

一种常见的方法是对每个 RGB 颜色分量使用值 $00、$33、$66、$99、$CC 和 $FF (Random(6) * $33)。

这将产生 216 种可以安全使用的不同颜色。

请参阅wikipedia 上的示例。

【讨论】:

  • 您的意思是“对于每个 RGB 组件”。
  • @Andreas,我最初的意思是“对于每种红色、绿色和蓝色”,但在没有看到新含义的情况下缩短了它:) Component 仍然是一个更精确的术语。
猜你喜欢
  • 2017-07-03
  • 1970-01-01
  • 2015-05-29
  • 2011-12-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
相关资源
最近更新 更多