基于弧的渐变

问题描述 投票:3回答:2

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

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

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

任何想法都会有帮助。

谢谢。

c# gradient
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度的弧。我不得不考虑做一整圈。


2
投票

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

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

alt text

© www.soinside.com 2019 - 2024. All rights reserved.