下载文件里的代码比较老了 在下也懒得去更新,其实文章已经说的很清楚了,关键代码也贴出来了,
认真看文章的同学应该很容易就能自己实现,下载文件那5个分各位看情谊吧。。。(代码以文章为准)
更新:
之前那个文本横向不支持下划线删除线等
1.添加依赖属性
public TextDecorationCollection TextDecorations
{
get { return (TextDecorationCollection)GetValue(TextDecorationsProperty); }
set { SetValue(TextDecorationsProperty, value); }
}
public static readonly DependencyProperty TextDecorationsProperty =
DependencyProperty.Register("TextDecorations", typeof(TextDecorationCollection), typeof(ReportButton), new PropertyMetadata());
2.修改文字绘制方式
#region DrawText
//textOrientation
if (VM.Direction == ReportContentDirection.Horizontal)
{
var fmttxt = MeasureFont(Text.ToString());
fmttxt.SetTextDecorations(TextDecorations);
drawingContext.DrawText(fmttxt, new Point(0, BorderThickness.Top));
}
————————————————————————————————————————————————————————
LabelEx实现说明
功能说明:
LabelEx是对WPF原生的Label控件的功能扩展
扩展的功能有
- 文字间距可控
- 文字排布方式可控
实现原理简述:
在摒弃了原有的文本属性基础上,通过自定义的依赖属性和Onrender的drawingContext的一系列绘制方法重绘Label的文字。
功能需求分析:
先看最终需要达到的效果
上对齐、左对齐
文字超出边界后
效果主要体现在竖排文字的变换上,从上图分析:
- 第一种竖排方式:中文(即非英文、数字、标点、空格)的文本竖排方式下是“站立”的,其余两种可看成实在横排排布的基础上对整个文字区域进行旋转操作
- 第一种竖排下:中文(即非英文、数字、标点、空格)的文本的斜体实现效果非普通的文本斜体,需要特殊处理
- 竖排下文字的左右对齐和上下对齐是非标准的
- 斜体情况下,文字和边界的控制