3

我正在尝试创建一个弧(可变宽度,可变度数 - 可能是整个圆),它逐渐从一端的红色变为另一端的绿色。我还没有弄清楚如何在弧上指定渐变来完成此操作。

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

我已经尝试过 PathGradientBrush 和 LinerarGradientBrush (但也许我错过了一些东西)。径向渐变似乎也没有给我我需要的东西。

任何想法都会有所帮助。

谢谢。

4

2 回答 2

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 度的弧。我不得不考虑做一个完整的循环。

于 2009-07-24T16:49:24.800 回答
2

您尚未指定您使用的语言,但一般而言,您可以使用Hue-Saturation-Value (HSV) 之类的颜色模型,并将色调从 0 度(红色)循环到 120 度(绿色)任何适合您的饱和度和价值。

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

替代文字

于 2009-07-24T14:59:10.080 回答