C# 使用带有LinearGradientBrush的动态前景

C# 使用带有LinearGradientBrush的动态前景,c#,wpf,button,linear-gradients,C#,Wpf,Button,Linear Gradients,我第一次在做WPF应用程序 我有一个按钮,当点击将改变其前景颜色。 我觉得常规的颜色很无聊,所以我做了一些线性渐变来让它看起来更好 在C#上,我写道。 //在这里,我创建了一个线性渐变衬套,一组渐变停止点,以及我需要的渐变停止点和一个笔刷转换器,以将颜色代码#fxxx转换为颜色 BrushConverter bc = new BrushConverter(); public LinearGradientBrush MetallicBlue= new LinearG

我第一次在做WPF应用程序

我有一个按钮,当点击将改变其前景颜色。 我觉得常规的颜色很无聊,所以我做了一些线性渐变来让它看起来更好

在C#上,我写道。 //在这里,我创建了一个线性渐变衬套,一组渐变停止点,以及我需要的渐变停止点和一个笔刷转换器,以将颜色代码#fxxx转换为颜色

        BrushConverter bc = new BrushConverter();
        public LinearGradientBrush MetallicBlue= new LinearGradientBrush();
        public GradientStopCollection BlueG = new GradientStopCollection();
        public GradientStop BGS1 = new GradientStop();
        public GradientStop BGS2 = new GradientStop();
        public GradientStop BGS3 = new GradientStop();
        public GradientStop BGS4 = new GradientStop();
//然后我定义每个渐变停止并将其添加到GradientStop集合中

            BGS1.Color = (Color)bc.ConvertFrom("#FF094AAD");
            BGS1.Offset = 0.244;
            BGS2.Color = (Color)bc.ConvertFrom("#FF0745AA");
            BGS2.Offset = 0.988;
            BGS3.Color = (Color)bc.ConvertFrom("#FF286ED1");
            BGS3.Offset = 0.5;
            BGS4.Color = (Color)bc.ConvertFrom("#FF094AAD");
            BGS4.Offset = 0.076;
            BlueG.Add(BGS1);
            BlueG.Add(BGS2);
            BlueG.Add(BGS3);
            BlueG.Add(BGS4);
//在这里,我设置了我的金属蓝属性

MetallicBlue.StartPoint = new Point(0.5, 0);
MetallicBlue.EndPoint = new Point(0.5, 1);
MetallicBlue.GradientStops = BlueG;
在我的点击事件中,当我设置前景颜色时,它将变为空白!文本消失

textBlock.Foreground = MetallicBlue;
有人能帮我吗。 我想在许多按钮上实现这一点,但它不太管用。
我缺少什么。

A
BrushConverter
返回一个
Brush
。您应该使用
颜色转换器
。这对我来说很好:

ColorConverter cc = new ColorConverter();
LinearGradientBrush MetallicBlue = new LinearGradientBrush();
GradientStopCollection BlueG = new GradientStopCollection();
GradientStop BGS1 = new GradientStop();
GradientStop BGS2 = new GradientStop();
GradientStop BGS3 = new GradientStop();
GradientStop BGS4 = new GradientStop();

BGS1.Color = (Color)cc.ConvertFrom("#FF094AAD");
BGS1.Offset = 0.244;
BGS2.Color = (Color)cc.ConvertFrom("#FF0745AA");
BGS2.Offset = 0.988;
BGS3.Color = (Color)cc.ConvertFrom("#FF286ED1");
BGS3.Offset = 0.5;
BGS4.Color = (Color)cc.ConvertFrom("#FF094AAD");
BGS4.Offset = 0.076;
BGS4.Offset = 0.076;
BlueG.Add(BGS1);
BlueG.Add(BGS2);
BlueG.Add(BGS3);
BlueG.Add(BGS4);

MetallicBlue.StartPoint = new Point(0.5, 0);
MetallicBlue.EndPoint = new Point(0.5, 1);
MetallicBlue.GradientStops = BlueG;

textBlock.Foreground = MetallicBlue;
textBlock.Text = "Sample";
textBlock.FontSize = 40;

A
BrushConverter
返回一个
Brush
。您应该使用
颜色转换器
。这对我来说很好:

ColorConverter cc = new ColorConverter();
LinearGradientBrush MetallicBlue = new LinearGradientBrush();
GradientStopCollection BlueG = new GradientStopCollection();
GradientStop BGS1 = new GradientStop();
GradientStop BGS2 = new GradientStop();
GradientStop BGS3 = new GradientStop();
GradientStop BGS4 = new GradientStop();

BGS1.Color = (Color)cc.ConvertFrom("#FF094AAD");
BGS1.Offset = 0.244;
BGS2.Color = (Color)cc.ConvertFrom("#FF0745AA");
BGS2.Offset = 0.988;
BGS3.Color = (Color)cc.ConvertFrom("#FF286ED1");
BGS3.Offset = 0.5;
BGS4.Color = (Color)cc.ConvertFrom("#FF094AAD");
BGS4.Offset = 0.076;
BGS4.Offset = 0.076;
BlueG.Add(BGS1);
BlueG.Add(BGS2);
BlueG.Add(BGS3);
BlueG.Add(BGS4);

MetallicBlue.StartPoint = new Point(0.5, 0);
MetallicBlue.EndPoint = new Point(0.5, 1);
MetallicBlue.GradientStops = BlueG;

textBlock.Foreground = MetallicBlue;
textBlock.Text = "Sample";
textBlock.FontSize = 40;

是的,这正是我需要的!是的,这正是我需要的!