生成颜色渐变

时间:2010-06-08 14:33:27

标签: c# .net winforms label

我想向我的用户显示他们的表单中有多少(百分之百)符合新标准。我想让他们直观地了解的方式是百分比将被着色。 0%时为0xFF0000(纯红色),100%时为0x00FF00(纯绿色)。沿途每一步计算颜色的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

色彩空间转换(由Tony建议)将为您提供最佳效果。 但是,如果这超出了你想要的范围,我建议一个简单的算法让你变黄(0xFFFF00)50%:

对于最高50%的值,以0xFF0000开头 将0xFF * Percentage / 50添加到绿色组件。

对于50%以上的值,以0xFFFF00开头。
从红色分量中减去0xFF *百分比/ 50。

结果对我的客户来说足够好; - )

答案 1 :(得分:1)

您无需自行计算 - 尝试使用LinearGradient画笔。 (msdn

LinearGradientBrush linGrBrush = new LinearGradientBrush(
   new Point(0, 10),
   new Point(200, 10),
   Color.FromArgb(255, 255, 0, 0),   // Opaque red
   Color.FromArgb(255, 0, 0, 255));  // Opaque blue

Pen pen = new Pen(linGrBrush);

e.Graphics.DrawLine(pen, 0, 10, 200, 10);
e.Graphics.FillEllipse(linGrBrush, 0, 30, 200, 100);
e.Graphics.FillRectangle(linGrBrush, 0, 155, 500, 30);