WPF中的文字修饰——上划线,中划线,基线与下划线
我们知道,文字的修饰包括:空心字、立体字、划线字、阴影字、加粗、倾斜等。这里只说划线字的修饰方式,按划线的位置,我们可将之分为:上划线、中划线、基线与下划线。如图:
从上至下,分别为上划线(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, Underline或None,如果没有设置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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SocketIo+SpringMvc实现文件的上传下载
SocketIo+SpringMvc实现文件的上传下载 socketIo不仅可以用来做聊天工具,也可以实现局域网(当然你如果有外网也可用外网)内实现文件的上传和下载,下面是代码的效果演示: image GIT地址: https://github.com/fengcharly/sockeio-springMvcUpload.git 部分代码如下: 服务端的代码: ChuanServer: import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.nio.channels.FileChannel; public class ChuanServer { public static void protServer(String po) throws IOException { int port = Integer.parseInt(po); ServerSocket serverSocket = new ServerSocket(port); while (true) { final ...
- 下一篇
二维码彩色广告招牌的切割制作问题(C#.net下对彩色二维码圆角样式及改进)
原文: 二维码彩色广告招牌的切割制作问题(C#.net下对彩色二维码圆角样式及改进) 我们知道,目前二维码还很少用于广告招牌的制作。但随着智能手机越来越普及,互联网等网络的应用也越来越广泛,作为连接物理世界与网络世界的桥梁——二维码必定会大显身手。二维码为什么这么有用?其中一个重要原因是它可以通过图像来描述计算机信息数据,并通过手机、平板电脑等终端直接与互联网相连。 在此,讲一讲二维码广告招牌的简化制作及美化的问题。 一般类型的二维码样式为矩形块状样式,如下图A所示: 图A 图B (图B对图A的样式做了加色及圆角化处理) 图C 黑白矩形块状二维码(未做任何修饰) 由图C可知,如果招牌制作时采用图C进行制作时,会遇到制作中的零碎化,不易拼接和安装的问题——还记得有人将英文字母S和B上下反装吗?甚至有人会将6和9装倒了!更要命的是,上面这个还不够美观,客户说它不够好看! 图1 分为多个彩色块的二维码 对比图1和图C,很明显图1的制作方式会更容易加工些,安装也相对容易些。 可以看到,图1对上图C做了圆角化处理,将多余的棱角给“磨平”了,在无法磨圆的地方,补上了圆角进行填充,加上不...
相关文章
文章评论
共有0条评论来说两句吧...