2014-02-24 29 views
0

在自定義ShapePathGeometryDefiningGeometry我希望PathGeometry顯示文本。如何從文本中獲取PathGeometry(未列出/格式化)

我試過FormattedText,但這看起來像藝術文本(如三維字形)。我沒有意識到,可能是語言障礙。
我想創建看起來像純文本格式文本PathGeometry,但仍與字體,字體大小,懷特等

我怎麼能這樣做?我可以給BuildGeometry一個參數嗎? 我嘗試這樣做:

PathGeometry geometry = new PathGeometry(); 

FormattedText formattedText = new FormattedText(text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Tahoma"), 12, Brushes.Black); 
var geometrygroup = formattedText.BuildGeometry(new Point())as GeometryGroup; 

if (geometrygroup != null) 
{ 
    foreach (var child in geometrygroup.Children) 
    { 
     var line = child as GeometryGroup; 

     if (line != null) 
     { 
      foreach (var glyph in line.Children) 
      { 
       var path = glyph as PathGeometry; 
       if (path != null) 
       { 
        geometry.AddGeometry(path); 
       } 
      } 
     } 
    } 
} 
geometry.Transform = new TranslateTransform(20, 80); 

回答

2

您的自定義形狀類可能是這樣簡單:

public class TextShape : Shape 
{ 
    public FormattedText Text { get; set; } 

    protected override Geometry DefiningGeometry 
    { 
     get { return Text.BuildGeometry(new Point()); } 
    } 
} 

就拿設置其Fill屬性,而不是Stroke的照顧。


否則,您可以通過簡單地調用GetFlattenedPathGeometryGetOutlinedPathGeometry總是創建任何其他Geometry一個PathGeometry

+0

我希望生活總是那麼容易。 – Gerard

相關問題