protected override void OnTextPropertyChanged(DependencyPropertyChangedEventArgs args) { if (String.IsNullOrEmpty(Text)) { flattenedTextPathGeometry = null; return; } FormattedText formattedText = new FormattedText(Text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, 100, Foreground); textLength = formattedText.Width; baseline = formattedText.Baseline; Geometry formattedTextGeometry = formattedText.BuildGeometry(new Point()); flattenedTextPathGeometry = PathGeometry.CreateFromGeometry(formattedTextGeometry).GetFlattenedPathGeometry(); warpedTextPathGeometry = flattenedTextPathGeometry.CloneCurrentValue(); GenerateWarpedGeometry(); }