它返回一個幾何體,但這是一個抽象類。 我正在創建一個文本形狀,並且想要緩存這個幾何體。
BuildGeometry
可能會返回不同類型,感覺可疑,因此我可能做錯了什麼。我可以破解代碼(它會在運行後立即執行),但我怎樣才能確定它始終是同一類型的?FormattedText.BuildGeometry返回哪個幾何?
public class Label : ShapeBase
{
RectangleGeometry geometry = new RectangleGeometry();
protected override Geometry DefiningGeometry
{
get { return geometry; }
}
protected override Size MeasureOverride(Size constraint)
{
return constraint;
}
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(Label), new UIPropertyMetadata(string.Empty, OnTextChanged));
private static void OnTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
Label label = (Label)d;
label.SetGeometry(label.Text);
label.InvalidateVisual();
}
private void SetGeometry(string text)
{
FormattedText formattedtext = new FormattedText(text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Tahoma"), 16, Brushes.Black);
GeometryGroup group = (GeometryGroup)formattedtext.BuildGeometry(new Point(0, 0));
}
}
你能告訴我們創建文本形狀的代碼嗎?另外:你可以設置一個斷點並檢查類型。 –
@ErnodeWeerd看我的編輯。 – Gerard