我们知道,文字的修饰包括:空心字、立体字、划线字、阴影字、加粗、倾斜等。这里只说划线字的修饰方式,按划线的位置,我们可将之分为:上划线、中划线、基线与下划线。如图:

从上至下,分别为上划线(Overline),中划线(StrikeThrough),基线(Baseline)和下划线(Underline)。

如何实现?

(1)XAML代码:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<TextBlock TextDecorations="Strikethrough" FontSize="72" FontFamily="Arial">A</TextBlock>
</Page>

这里TextDecorations属性可以设置为:OverLine, Strikethrough, Baseline, UnderlineNone,如果没有设置TextDecorations属性,则默认为None,即不带划线修饰。

(2)使用C#代码:
private void SetDefaultStrikethrough()
{
   textBlock1.TextDecorations = TextDecorations.Strikethrough;
}
(为了简洁,这里只列出相关的关键代码,其他代码未用C#列出。textBlock1为TextBlock的名称,在XAML中使用 x:Name="textBlock1"形式标记)

如果要更复杂点的效果,比如需要设置划线的颜色、线粗等,如下图:

如何制作类似效果呢?
方法是:设置TextBlock的TextDecorations属性,再对TextDecoration的Pen属性进行设置。

如下XAML代码:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Canvas>
<TextBlock FontSize="84" FontFamily="Arial Black" Margin="0,0">
<TextBlock.TextDecorations>
<TextDecoration PenOffset="10" PenOffsetUnit="Pixel" PenThicknessUnit="Pixel">
 <TextDecoration.Pen>
          <Pen Thickness="5">
            <Pen.Brush>
              <LinearGradientBrush Opacity="0.8" StartPoint="0,0.5"  EndPoint="1,0.5">
                <LinearGradientBrush.GradientStops>
                  <GradientStop Color="Yellow" Offset="0" />
                  <GradientStop Color="Red" Offset="1" />
                </LinearGradientBrush.GradientStops>
              </LinearGradientBrush>
            </Pen.Brush>
            <Pen.DashStyle>
              <DashStyle Dashes="1,2,3"/>
            </Pen.DashStyle>
          </Pen>
        </TextDecoration.Pen>
</TextDecoration>
</TextBlock.TextDecorations>
GOOD
</TextBlock>
</Canvas>
</Page>

C#关键代码:
private void SetLinearGradientUnderline()
{
    TextDecoration myUnderline = new TextDecoration();

Pen myPen = new Pen();
    myPen.Brush = new LinearGradientBrush(Colors.Yellow, Colors.Red, new Point(0, 0.5), new Point(1, 0.5));
    myPen.Brush.Opacity = 0.8;
    myPen.Thickness = 5;
    myPen.DashStyle = DashStyles.Dash;
    myUnderline.Pen = myPen;
    myUnderline.PenThicknessUnit = TextDecorationUnit.FontRecommended;

TextDecorationCollection myCollection = new TextDecorationCollection();
    myCollection.Add(myUnderline);
    textBlockGood.TextDecorations = myCollection;
}

引申问题:
可不可以同时画上划线、中划线和下划线?比如:可不可以画如下图所示的文武线呢?

答案是:可以!留给有兴趣的朋友去思考吧。

相关阅读:Typography in Windows Presentation Foundation http://msdn2.microsoft.com/en-us/library/ms742190.aspx

WPF中的文字修饰——上划线,中划线,基线与下划线相关推荐

  1. WPF编程,TextBlock中的文字修饰线(上划线,中划线,基线与下划线)的使用方法。...

    WPF编程,TextBlock中的文字修饰线(上划线,中划线,基线与下划线)的使用方法. 原文:WPF编程,TextBlock中的文字修饰线(上划线,中划线,基线与下划线)的使用方法. 版权声明:我不 ...

  2. css中字体下划线样式,css下划线 浅谈css自定义下划线

    使用css样式对一段文字或一段文字中其中几个文字设置虚线效果的下划线如何实现?我们知道css字体下划线使用text-decoration样式实现,而虚线下划线则不能使用此css样式属性.要实现通过下边 ...

  3. a标签去下划线或文字添加下修饰_怎么去掉html a超链接下划线

    我们在HTML网页制作过程中,相信大家对css文本超链接这个概念并不陌生.我们都知道想要给某段文本或者指定元素添加一个锚点也就是超链接需要用到HTML中的a标签.程序猿的生活:打造全网web前端全栈资 ...

  4. html5中链接去除下划线,html超链接去掉下划线 html去除取消超链接下划线

    html a超链接标签,默认有的涉猎器表现有下划线,有的不有下划线,大多锚文本超链接A标签内字体是有下划线的,怎么去除超链接下划线?html 超链接去除下划线怎么样做? 去掉去除超链接锚文本的下划线需 ...

  5. python中的单下划线和双下划线_python 里面的单下划线与双下划线的区别(私有和保护)...

    Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...

  6. 关于python中带下划线的变量和函数 的意义,class类带一个下划线和带两个下划线的定义

    总结: 变量: 1.  前带_的变量:  标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量 2.  前带两个_ ,后带两个_ 的变量:  标明是内置变量, 3.  大写加下划线的变量: ...

  7. htmla标签下划线去除_html超链接的下划线怎么去掉?a标签去下划线的方法都在这里...

    本篇文章就是关于html超链接取消下划线的用法,教你如何快速的去掉HTML超链接下划线的方法,最后还有相关代码解释,下面就让我们一起看看这篇文章吧 首先我们使用css的基础样式来做一个最简单的去下划线 ...

  8. htmla标签下划线去除_html超链接去掉下划线 html去除取消超链接下划线

    html a超链接标签,默认有的涉猎器表现有下划线,有的不有下划线,大多锚文本超链接A标签内字体是有下划线的,怎么去除超链接下划线?html 超链接去除下划线怎么样做? 去掉去除超链接锚文本的下划线需 ...

  9. Python 单下划线(“_“)与双下划线(“__“)以及以双下划线开头和结尾的的区别

    由于python 中没有java 语言中的private ,public, protected 之类的,就引用了下划线. 单下划线的作用: 以单下划线("_")开头的模块变量或者函 ...

最新文章

  1. 条令考试小程序辅助器_在线考试题库小程序开发有哪些功能?
  2. java实现用户界面的包_在Java中实现用户界面功能的包
  3. Mysql中查询速度的优化
  4. 前端jenkins打包编译发布项目流程
  5. 作者:聂瑞华(1963-),男,华南师范大学计算机学院教授。
  6. java中为什么不能强制转换_为什么Java中的强制转换异常致命?
  7. python bytes是什么类型,python中的字节串类型(bytes)
  8. 【感知机/支持向量机】点到平面距离公式的由来
  9. matlab 矩阵逻辑与,MATLAB自学笔记(七):数组运算与矩阵操作
  10. 计算机图形学实验一直线-DDA算法
  11. 【动画消消乐】HTML+CSS 自定义加载动画 069
  12. 2.4G RFID动物耳标解决方案 SI24R2F+
  13. iOS 图片编辑——涂鸦——在图片上添加文字
  14. 我的第一个工程-一个台球游戏
  15. 大数据、java、python、区块链、人工智能发展前景
  16. 【Three.js入门】灯光与阴影、平行光阴影属性、聚光灯的属性和应用
  17. 【Appium踩坑】关闭inspector后打开weditor,uiautomator2.exceptions.NullPointerExceptionError: -32001 Jsonrpc er
  18. 对参考文献格式的一些举例
  19. python中for无限循环_循环-在Python中从1循环到无穷大
  20. 任务调度,分布式任务调度

热门文章

  1. 高通FastCV简介
  2. PCAN-USB FD选型使用比较
  3. 蝴蝶展翅鸿蒙云飞,关于蝴蝶的伤感句子 开辟鸿蒙,谁为情种?都只为风月情浓...
  4. Unity3D之日常操作-Aspose.Words.dll-U3D读写word_文本内容写入
  5. 亚马逊账号关联的后果是什么
  6. android media player实现一个可手势滑动控制 + 可以调节分辨率|字幕|倍速的视频播放器(MediaPlayer + ExoPlayer实现)
  7. NO.4 项目无法一键打包?自己写个shell脚本吧
  8. 均匀化退火时间_热处理加工均匀化退火要点
  9. 《Thinking in Bets》读书分享 - 如何在信息不完全情况下做出更好的决策(1)...
  10. 50行实现C语言FM收音机-Taskbus Stdio封装器在SDR课程中的应用