美文网首页
WPF中让TextBlock每一个字符显示不同的颜色

WPF中让TextBlock每一个字符显示不同的颜色

作者: 陈玉涛 | 来源:发表于2019-12-13 16:55 被阅读0次
            TextBlock Tips = mainWindow.FindName("imgTips") as TextBlock;
            Tips.Inlines.Clear();
            Tips.Inlines.Add(FormatText(info.Tips));
            static Color backColor = (Color)ColorConverter.ConvertFromString("#6AAEF2");
            static Dictionary<string, Func<string, Run>> keywords = new Dictionary<string, Func<string, Run>>()
            {
                {"step 01.", s => new Run(s){Foreground = new SolidColorBrush(backColor)}},
                {"step 02.", s => new Run(s){Foreground = new SolidColorBrush(backColor)}},
                {"step 03.", s => new Run(s){Foreground = new SolidColorBrush(backColor)}},
                {"step 04.", s => new Run(s){Foreground = new SolidColorBrush(backColor)}},
                {"视频下载", s => new Run(s){Foreground = new SolidColorBrush(backColor)}},
                {"视频播放", s => new Run(s){Foreground = new SolidColorBrush(backColor)}},
                {"视频提取", s => new Run(s){Foreground = new SolidColorBrush(backColor)}},
            };
            static Inline FormatText(string text)
            {
                Span span = new Span();
                int startIndex = 0;
                while (true)
                {
                    var hit = keywords.Keys.Select(k => new { word = k, index = text.IndexOf(k, startIndex) }).OrderBy(x => (uint)x.index).FirstOrDefault();
                    if (hit.index < 0)
                    {
                        span.Inlines.Add(new Run(text.Substring(startIndex)));
                        break;
                    }
                    span.Inlines.Add(new Run(text.Substring(startIndex, hit.index - startIndex)));
                    span.Inlines.Add(keywords[hit.word](hit.word));
                    startIndex = hit.index + hit.word.Length;
                }
                return span;
            }
    

    相关文章

      网友评论

          本文标题:WPF中让TextBlock每一个字符显示不同的颜色

          本文链接:https://www.haomeiwen.com/subject/sdzfnctx.html