Wpf 如何从文本中获取PathGeometry(未勾勒/格式化)

Wpf 如何从文本中获取PathGeometry(未勾勒/格式化),wpf,text,geometry,Wpf,Text,Geometry,在自定义形状中,将路径几何体作为定义几何体我希望路径几何体显示文本 我尝试了格式化文本,但这看起来像是艺术文本(如3-d字形)。我没有意识到,可能是语言障碍。 我想从一个看起来像纯文本的文本创建一个PathGeometry,但仍然使用字体、字体大小、宽度等 我该怎么做呢?我能给BuildGeometry一个参数吗? 我试过这个: PathGeometry geometry = new PathGeometry(); FormattedText formattedText = new Forma

在自定义
形状
中,将
路径几何体
作为
定义几何体
我希望
路径几何体
显示文本

我尝试了格式化文本,但这看起来像是艺术文本(如3-d字形)。我没有意识到,可能是语言障碍。
我想从一个看起来像纯文本的文本创建一个
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);

您的自定义形状类可以如此简单:

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

    protected override Geometry DefiningGeometry
    {
        get { return Text.BuildGeometry(new Point()); }
    }
}
只需注意设置其
Fill
属性,而不是设置
Stroke



否则,只要调用或,您就可以从任何其他
几何体创建
PathGeometry

我希望live总是这么简单。