0

私は問題があります。

LinearGradientBrush-->で xaml (mainWindow) のメソッドを呼び出したいGradientStop

アニメーションの背景の色を変更したいと思います。次のようないくつかのパラメーターを持つ関数があります。

public static List<Color> GetGradientColors(Color start, Color end, int steps)
{
    return GetGradientColors(start, end, steps, 0, steps - 1);
}

public static List<Color> GetGradientColors(Color start, Color end, int steps, int firstStep, int lastStep)
{
    var colorList = new List<Color>();
    if (steps <= 0 || firstStep < 0 || lastStep > steps - 1)
        return colorList;

    double aStep = (end.A - start.A) / steps;
    double rStep = (end.R - start.R) / steps;
    double gStep = (end.G - start.G) / steps;
    double bStep = (end.B - start.B) / steps;

    for (int i = firstStep; i < lastStep; i++)
    {
        byte a = (byte)(start.A + (int)(aStep * i));
        byte r = (byte)(start.R + (int)(rStep * i));
        byte g = (byte)(start.G + (int)(gStep * i));
        byte b = (byte)(start.B + (int)(bStep * i));
        colorList.Add(Color.FromArgb(a, r, g, b));
    }

    return colorList;
}

コード XAML :

<LinearGradientBrush StartPoint="0.0, 0.6" EndPoint="1.0, 0.6">
    <GradientStop Color="{ Binding GetGradientColors(green, yellow, 2)}" Offset="0"/>
</LinearGradientBrush>

これを行うことは可能ですか?

4

2 に答える 2

0

最初に type のプロパティを宣言し、ObservableCollection<Color>named としましょうColours:

public ObservableCollection<Color> Colours { get; set; }

次に、コンストラクターでプロパティを設定します。

Colours = GetGradientColors(Colors.Green, Colors.Yellow, 2);

次に、XAML でデータ バインドします。

それはまさにあなたが望んでいたものではありませんが、あなたが得ようとしているのとほぼ同じです.

于 2014-07-10T15:12:44.970 に答える