zoukankan      html  css  js  c++  java
  • 2019-1-24-WPF-文字描边

    title author date CreateTime categories
    WPF 文字描边
    lindexi
    2019-01-24 19:47:18 +0800
    2019-1-24 19:40:7 +0800
    WPF

    本文告诉大家如何写出描边的字体

    在WPF如果需要写入描边需要使用 FormattedText 将文字转换为 Geometry 然后通过画出 Geometry 的边框和填充画出描边

    首先创建一个类继承 UIElement 这样就可以重写 OnRender 方法在里面画出文字

    假设需要画出的文字是 欢迎访问我博客 http://lindexi.gitee.io 里面有大量 UWP WPF 博客

           protected override void OnRender(DrawingContext drawingContext)
            {
                var str = "欢迎访问我博客 http://lindexi.gitee.io 里面有大量 UWP WPF 博客";
    
                base.OnRender(drawingContext);
            }

    通过字符串创建 FormattedText 这里需要传入很多参数

                var formattedText = new FormattedText(str, CultureInfo.CurrentCulture,
                    FlowDirection.LeftToRight,
                    new Typeface
                    (
                        new FontFamily("微软雅黑"),
                        FontStyles.Normal,
                        FontWeights.Normal,
                        FontStretches.Normal
                    ),
                    30,
                    Brushes.Black, 96);

    调用 formattedText.BuildGeometry 可以创建 Geometry 参数传入左上角坐标

    然后就是画出这个 Geometry 通过这个 Pen 设置描边的宽度和颜色

                drawingContext.DrawGeometry
                (
                    new SolidColorBrush((Color) ColorConverter.ConvertFromString("#F00002")),
                    new Pen(new SolidColorBrush(Colors.Black), 1),
                    geometry
                );

    打开 xaml 添加这个控件运行代码就可以看到上面界面

            <local:CureekaMasar></local:CureekaMasar>

    所有代码请看下面

           protected override void OnRender(DrawingContext drawingContext)
            {
                var str = "欢迎访问我博客 http://lindexi.gitee.io 里面有大量 UWP WPF 博客";
    
                var formattedText = new FormattedText(str, CultureInfo.CurrentCulture,
                    FlowDirection.LeftToRight,
                    new Typeface
                    (
                        new FontFamily("微软雅黑"),
                        FontStyles.Normal,
                        FontWeights.Normal,
                        FontStretches.Normal
                    ),
                    30,
                    Brushes.Black, 1);
    
                var geometry = formattedText.BuildGeometry(new Point(10, 10));
                
                drawingContext.DrawGeometry
                (
                    new SolidColorBrush((Color) ColorConverter.ConvertFromString("#F00002")),
                    new Pen(new SolidColorBrush(Colors.Black), 1),
                    geometry
                );
    
                base.OnRender(drawingContext);
            }
  • 相关阅读:
    JavaScript初学者应注意的七个细节
    KindEditor 编辑器使用方法
    有关 JavaScript 的 10 件让人费解的事情
    能说明你的Javascript技术很烂的五个原因
    分享10个便利的HTML5/CSS3框架
    现在就使用HTML5的十大原因
    你应该知道的Node.js扩展模块——Hashish
    C++ Tip: How To Get Array Length | Dev102.com
    MPI for Python — MPI for Python v1.3 documentation
    http://construct.readthedocs.org/en/latest/basics.html
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085562.html
Copyright © 2011-2022 走看看