在自Shape
PathGeometry
为DefiningGeometry
的自定义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}}
答案 0 :(得分:3)
您的自定义Shape类可以像这样简单:
public class TextShape : Shape
{
public FormattedText Text { get; set; }
protected override Geometry DefiningGeometry
{
get { return Text.BuildGeometry(new Point()); }
}
}
只需设置其Fill
属性而不是Stroke
。
否则,您只需致电GetFlattenedPathGeometry
或GetOutlinedPathGeometry
,即可随时从任何其他PathGeometry
创建Geometry
。