【问题标题】:Silverlight letter-spacingSilverlight 字母间距
【发布时间】:2010-12-14 23:39:28
【问题描述】:

在 Silverlight 中管理字母间距、字距调整或跟踪的最简单方法是什么?

我目前在 Arial 中有大标题,只是字母之间的空格太大。

谢谢

【问题讨论】:

    标签: c# silverlight fonts kerning


    【解决方案1】:

    不知道这是否是最好的解决方案,但对我来说效果很好:

    SomeElement.Children.Add(LetterSpacing("Test", -3));
    

    ...

    private Canvas LetterSpacing(string String, double Space)
        {
            Canvas kpr = new Canvas();
            char[] lters = String.ToCharArray();
            Label[] lbls = new Label[lters.Length];
    
            for (int i = 0; i < lters.Length; i++)
            {
                Label tmpLbl = new Label();
                lbls[i] = tmpLbl;
                kpr.Children.Add(lbls[i]);
                lbls[i].Content = lters[i];
                lbls[i].FontSize = 30;
                lbls[i].FontFamily = new FontFamily("Verdana");
            }
    
            Dispatcher.BeginInvoke(
                () =>
                {
                    double leftPos = 0;
                    for (int j = 0; j < lbls.Length; j++)
                    {
                        Canvas.SetLeft(lbls[j], 0 + leftPos);
                        leftPos += (lbls[j].ActualWidth - (Space * -1));
                    }
                });
    
            return kpr;
        }
    

    【讨论】:

      【解决方案2】:

      我认为此时运行时不支持它。您可以将文本导出为路径并使用它。

      【讨论】:

      • 谢谢。我想我会为 textblock 编写一个拆分所有单词的行为,并使用一个属性来分配间距参数。
      猜你喜欢
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 2011-07-27
      • 2011-12-11
      相关资源
      最近更新 更多