【问题标题】:Using Dynamic Foreground with LinearGradientBrush将动态前景与 LinearGradientBrush 结合使用
【发布时间】:2017-09-28 14:12:34
【问题描述】:

我是第一次开发 WPF 应用程序

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

在我写的 C# 上。 // 这里我创建了一个线性渐变灌木,一个渐变色标的集合,以及我需要的渐变色标和一个刷子转换器来将颜色代码#Fxxxx 转换为颜色

        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;

谁能帮帮我。 我想在许多按钮上实现这一点,但它不太管用。 我错过了什么。

【问题讨论】:

    标签: c# wpf button linear-gradients


    【解决方案1】:

    BrushConverter 返回Brush。您应该使用ColorConverter。这对我来说很好:

    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;
    

    【讨论】:

    • 是的,这正是我所需要的!
    猜你喜欢
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多