基于弧的渐变

时间:2009-07-24 14:44:55

标签: c# gradient

我正在尝试创建一个弧(可变宽度,可变度数 - 可能是整个圆圈),逐渐从一端的红色变为另一端的绿色。我还没想出如何在弧上指定渐变来实现这一目标。

例如,如果您可以想象创建一个圆形温度计,其中测量标记在圆圈上以0到500的不同程度指向。作为一个额外的视觉,我希望测量周长具有渐变颜色,表示仪表温度 - 从冷(绿色)到非常热(红色)。

我已尝试过PathGradientBrush和LinerarGradientBrush(但也许我错过了一些东西)。径向渐变似乎不能满足我的需要。

任何想法都会有所帮助。

感谢。

2 个答案:

答案 0 :(得分:3)

此代码将创建一个从红色到绿色(从左到右)的弧。它只是在表格上绘制。

private void button1_Click(object sender, EventArgs e)
{
    using (Graphics g = this.CreateGraphics())
    {
        LinearGradientBrush lgb = new LinearGradientBrush(new Point(0, 0), new Point(210, 0), Color.Red, Color.Green);
        Pen p = new Pen(lgb, 10);
        g.DrawArc(p, 10, 10, 200, 200, -22.5f, -135f);

    }
}

这适用于最高180度的弧。我不得不考虑整整一圈。

答案 1 :(得分:2)

您尚未指定您正在使用的语言,但一般而言,您可以使用像Hue-Saturation-Value (HSV)这样的颜色模型,并将色调从0度(红色)循环到120度(绿色)无论饱和度和价值适合你。

这是一个例子 - 顶部渐变在RGB模型中从绿色变为红色,但较低的渐变使用HSV,从而产生更令人愉悦的效果。

alt text