2010-12-14 7 views
3

Was ist der einfachste Weg, Briefabstand, Kerning oder Tracking in Silverlight zu verwalten?Silverlight Briefabstand

Ich habe derzeit große Titel in Arial, die einfach zu viel Platz zwischen den Buchstaben haben.

dank

Antwort

0

Ich glaube nicht, dass es von der Laufzeit zu diesem Zeitpunkt unterstützt wird. Sie könnten den Text als Pfad exportieren und diesen verwenden.

+0

Dank. Ich denke, ich werde ein Verhalten für den Textblock schreiben, der alle Wörter aufteilt, mit einer Eigenschaft, die den Abstandsparameter zuweist. – keyle

2

weiß nicht, ob es die beste Lösung, aber es funktioniert gut für mich:

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; 
    }