winforms C#遍历颜色?

enxuqcxy  于 2023-01-14  发布在  C#
关注(0)|答案(1)|浏览(159)

在我的程序中,我需要依次循环使用已知的用户颜色,使其看起来平滑自然,就像DWM颜色滑块一样。
颜色也必须转换为单位

private static uint ColorToBgra(Color     
{
   return (uint)
   (color.B | (color.G << 8) | (color.R << 16) | (color.A << 24));
}

然后设置它。我试着把它设置为白色,uint为0,然后每隔0.1秒加+1,但是它不平滑,在大约uint 250的间隔它会变成黑色,然后继续。this对我有用吗?我试过了,但是它不起作用。
有什么想法吗?

toe95027

toe950271#

这可能会把你推向正确的方向?

// w goes from 0 to 100
private static Color spectrumColor(int w)
{
  float r = 0.0f;
  float g = 0.0f;
  float b = 0.0f;

  w = w % 100;

  if (w < 17) {
    r = -(w - 17.0f) / 17.0f;
    b = 1.0f;
  } else if (w < 33) {
    g = (w - 17.0f) / (33.0f - 17.0f);
    b = 1.0f;
  } else if (w < 50) {
    g = 1.0f;
    b = -(w - 50.0f) / (50.0f - 33.0f);
  } else if (w < 67) {
    r = (w - 50.0f) / (67.0f - 50.0f);
    g = 1.0f;
  } else if (w < 83) {
    r = 1.0f;
    g = -(w - 83.0f) / (83.0f - 67.0f);
  } else {
    r = 1.0f;
    b = (w - 83.0f) / (100.0f - 83.0f);
  }

  return Color.FromArgb((int)r * 255, (int)g * 255, (int)b * 255);
}

相关问题