Search code examples
.netwpf.net-3.5geometryformatted-text

How do I Convert a FormattedText String into a Geometry-Based Object?


How do I convert a FormattedText string into a geometry-based object?

I don't think this question requires much explanation, and I can't think if very many other details I could give ...

I just need to convert the FormattedText into something I can use mathematically (geometrically).

Any advice is appreciated!


Solution

  • You are probably looking for FormattedText.BuildGeometry Method or FormattedText.BuildHighlightGeometry Method; both MSDN links are featuring the usual examples too.

    The basic usage pattern is like so:

    // Create sample formatted text.
    FormattedText formattedText = new FormattedText("Sample",
        CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight,
        new Typeface("Verdana"), 16, System.Windows.Media.Brushes.Black);
    
    // Build geometry object that represents the text.
    Geometry normalGeometry = formattedText.BuildGeometry(
        new System.Windows.Point(0, 0));
    
    // Build geometry object that represents the highlight bounding box of the text.
    Geometry highLightGeometry = formattedText.BuildHighlightGeometry(
        new System.Windows.Point(0, 0));