C# 弧基梯度

C# 弧基梯度,c#,gradient,C#,Gradient,我试图创建一个圆弧(可变宽度,可变度数-可能是一个完整的圆),它从一端的红色逐渐变为另一端的绿色。我还没有弄明白如何在圆弧上指定渐变来实现这一点 例如,如果您可以想象创建一个圆形温度表,其中仪表标记指向圆圈上从0到500的不同角度。作为一个额外的视觉效果,我希望仪表周长有一个渐变颜色,表示仪表温度-从冷(绿色)到非常热(红色) 我尝试了PathGradientBrush和LineraGradientBrush(但可能我错过了一些东西)。径向梯度似乎也不能满足我的需要 任何想法都会有帮助 谢谢。您

我试图创建一个圆弧(可变宽度,可变度数-可能是一个完整的圆),它从一端的红色逐渐变为另一端的绿色。我还没有弄明白如何在圆弧上指定渐变来实现这一点

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

我尝试了PathGradientBrush和LineraGradientBrush(但可能我错过了一些东西)。径向梯度似乎也不能满足我的需要

任何想法都会有帮助


谢谢。

您还没有指定您正在使用的语言,但一般来说,您可以使用类似的颜色模型,并将色调从0度(红色)循环到120度(绿色),无论什么饱和度和值适合您

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


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

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

我用的是C。问题是,我不知道如何用一个跟随圆的梯度来填充一条圆形路径。我需要渐变方向来跟随圆,而不是矩形。当我使用渐变填充(或使用LinearGradient笔绘制)时,我看到的是渐变是从左到右应用的(默认情况下)。如果我画一个圆,那么整个圆的左侧是一种颜色,混合到圆右侧的结束颜色中。我想从圆上给定点的一种颜色开始,在另一点的另一种颜色结束。你可以迭代绘制圆弧-例如,计算圆弧上0度和1度的点,计算圆弧上该点的色调,在该色调中绘制线。然后做1到2度,依此类推。是的,超过180度是个问题,我想知道是否有一个干净的解决方案。在这一点上,我可能会打破圆分成4个象限,以绘制梯度弧,使它看起来尽可能最好。谢谢你的意见。:-)