WPF Label控件文字竖排及控制字间距

下载文件里的代码比较老了 在下也懒得去更新,其实文章已经说的很清楚了,关键代码也贴出来了,

认真看文章的同学应该很容易就能自己实现,下载文件那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控件的功能扩展

扩展的功能有

  1. 文字间距可控
  2. 文字排布方式可控

实现原理简述:

在摒弃了原有的文本属性基础上,通过自定义的依赖属性和Onrender的drawingContext的一系列绘制方法重绘Label的文字。

功能需求分析:

先看最终需要达到的效果

上对齐、左对齐

文字超出边界后

效果主要体现在竖排文字的变换上,从上图分析:

  1. 第一种竖排方式:中文(即非英文、数字、标点、空格)的文本竖排方式下是“站立”的,其余两种可看成实在横排排布的基础上对整个文字区域进行旋转操作
  2. 第一种竖排下:中文(即非英文、数字、标点、空格)的文本的斜体实现效果非普通的文本斜体,需要特殊处理
  3. 竖排下文字的左右对齐和上下对齐是非标准的
  4. 斜体情况下,文字和边界的控制

 

 

自定义依赖属性说明

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值