首页 > 其他分享 >WPF中的文字修饰——上划线,中划线,基线与下划线

WPF中的文字修饰——上划线,中划线,基线与下划线

时间:2023-02-28 10:31:56浏览次数:54  
标签:下划线 划线 Pen myPen new WPF TextDecorations


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

WPF中的文字修饰——上划线,中划线,基线与下划线_c#

从上至下,分别为上划线(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"形式标记)

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

WPF中的文字修饰——上划线,中划线,基线与下划线_xml_02



如何制作类似效果呢?方法是:设置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;
}

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

WPF中的文字修饰——上划线,中划线,基线与下划线_xml_03

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

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

标签:下划线,划线,Pen,myPen,new,WPF,TextDecorations
From: https://blog.51cto.com/JohnsonJu/6090368

相关文章

  • 给WPF文字加多条修饰线
    这是上篇​​WPF中的文字修饰——上划线,中划线,基线与下划线​​效果图:XAML代码:<Pagexmlns="​​http://schemas.microsoft.com/winfx/2006/xaml/presentation​​​"xmlns......
  • WPF应用程序顶级标签一定是Window吗?
    WPF应用程序顶级标签一定是Window吗? 很多人误以为是。可是,答案却是否定的。我们不妨来测试一下。首先使用顶级标签为Window,这是最普通、也是最常见的情况。新建一个WPF应......
  • 距离北京奥运还有359天,发布WPF版本的北京2008标志(下)
    图片显示效果: XAML代码:<ViewboxWidth="463.548828"Height="370.816895"xmlns="​​​http://schemas.microsoft.com/winfx/2006/xaml/presentation​​​"xmlns:x=......
  • WPF中,Grid与Table的区别(英文)
    HowisGridDifferentfromTable?TableandGridsharesomecommonfunctionality,buteachisbestsuitedfordifferentscenarios.(1)GridderivesfromthePanel......
  • WPF 获取拖拽网页图片链接
    在浏览器里拖拽一个元素,我只获取图片链接privatevoidGrid_PreviewDragOver(objectsender,DragEventArgse){e.Effects=DragDropEffects.A......
  • 从.net Framework4.6WPF升级到.netcore3.1/net5/6/7.0版本
    因项目需要,需将.netFramework4.6WPF升级到.netcore3.1/net5.0/6.0/7.0版本,通过很多办法解决,开始搞得一头雾水。终于,找到了办法。1、首先下载upgrade-assistant工具(.net升级......
  • WPF知识点备忘录——控件模板
    模板<Application.Resources><ResourceDictionary><!--将画刷等从模板拆分出来,方便重用--><RadialGradientBrushRadiusX="1"R......
  • WPF MVVM框架------ Prism中的对话服务(IDialogService)
    在wpf中,我们平时使用对话框最常用的一种方式就是新建一个窗口,然后new出来后再调用ShowDialog()方法显示弹窗,prism中为我们提供了对话服务接口,我们可以通过这个服务向窗体......
  • WPF ItemsControl Command 绑定操作
    视图模型:usingSystem.Collections.ObjectModel;usingSystem.Diagnostics;usingSystem.Windows.Input;usingCommunityToolkit.Mvvm.ComponentModel;usingCommuni......
  • WPF知识点备忘录——样式
    <Window.Resources><!--只对Control类及其派生类有效,若改成Button则只对Button有效--><Stylex:Key="Style1"><SetterProperty="Con......