如何从文本中获取PathGeometry(未概述/格式化)

时间:2014-02-24 13:28:21

标签: wpf text geometry

在自Shape PathGeometryDefiningGeometry的自定义PathGeometry中,我希望PathGeometry显示文字。

我尝试过FormattedText,但这看起来像艺术文字(如三维字形)。我没有意识到这一点,可能是语言障碍 我想从一个看起来像纯文本的文本中创建一个BuildGeometry,但仍然使用Typeface,Fontsize,wight等。

我该怎么做?我可以给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); 一个参数吗? 我试过这个:

{{1}}

1 个答案:

答案 0 :(得分:3)

您的自定义Shape类可以像这样简单:

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

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

只需设置其Fill属性而不是Stroke


否则,您只需致电GetFlattenedPathGeometryGetOutlinedPathGeometry,即可随时从任何其他PathGeometry创建Geometry