【问题标题】:Windows color to single integerWindows 颜色到单个整数
【发布时间】:2013-02-21 10:31:49
【问题描述】:

我正在使用的 API 仅支持颜色的 RGB 分量的字节值。我正在尝试区分可变数量的项目,例如 8 到 12 个。我想为每个项目分配一种颜色。因此,如果有 10 个项目,我会将范围划分为 10 个,并为每个项目分配相应的颜色(想想彩虹)。看起来toArgb() 可以工作,但更多读数表明它可能使用十六进制。我显然需要提取 RGB 值以发送回 API。

我怎样才能做到这一点?

【问题讨论】:

  • 你想达到什么目的?您是否只需要一种算法来生成给定数量的不同颜色?
  • 按颜色分类是什么意思?
  • 颜色是否应该有渐变过渡?
  • 是的,我最终会得到一个生成给定数量颜色的算法。但实际上我需要知道可以分成相等部分的颜色输入格式。
  • 在屏幕上,用户将尝试组织项目。这些项目目前是黑白的,分配颜色会更容易搭配。

标签: c# colors drawing system


【解决方案1】:

据我了解,您将输入颜色范围和项目数量。此外,您希望生成的颜色代表颜色渐变。

试试这个:

// set the edges of the color range
var firstColor = Color.Red;
var secondColor = Color.Green;

int rMin = firstColor.R;
int rMax = secondColor.R;
int bMin = firstColor.B;
int bMax = secondColor.B;
int gMin = firstColor.G;
int gMax = secondColor.G;

int size = 10;

for (int i = 0; i < size; i++)
{
    var rAverage = rMin + (int)((rMax - rMin) * i / size);
    var gAverage = gMin + (int)((gMax - gMin) * i / size);
    var bAverage = bMin + (int)((bMax - bMin) * i / size);
    var currentColor = Color.FromArgb(rAverage, gAverage, bAverage);
    // TODO: use the currentColor
}

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 2017-12-26
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多