/// <summary> /// Creates formatted text. /// </summary> /// <param name="element">The owner element. The text formatter setting are read from this element.</param> /// <param name="text">The text.</param> /// <param name="typeface">The typeface to use. If this parameter is null, the typeface of the <paramref name="element"/> will be used.</param> /// <param name="emSize">The font size. If this parameter is null, the font size of the <paramref name="element"/> will be used.</param> /// <param name="foreground">The foreground color. If this parameter is null, the foreground of the <paramref name="element"/> will be used.</param> /// <returns>A FormattedText object using the specified settings.</returns> public static FormattedText CreateFormattedText(FrameworkElement element, string text, Typeface typeface, double? emSize, Brush foreground) { if (element == null) throw new ArgumentNullException("element"); if (text == null) throw new ArgumentNullException("text"); if (typeface == null) typeface = element.CreateTypeface(); if (emSize == null) emSize = TextBlock.GetFontSize(element); if (foreground == null) foreground = TextBlock.GetForeground(element); #if DOTNET4 return new FormattedText( text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, emSize.Value, foreground, null, TextOptions.GetTextFormattingMode(element) ); #else if (TextFormattingModeProperty != null) { object formattingMode = element.GetValue(TextFormattingModeProperty); return (FormattedText)Activator.CreateInstance( typeof(FormattedText), text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, emSize, foreground, null, formattingMode ); } else { return new FormattedText( text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, emSize.Value, foreground ); } #endif }
/// <summary> /// Creates formatted text. /// </summary> /// <param name="element">The owner element. The text formatter setting are read from this element.</param> /// <param name="text">The text.</param> /// <param name="typeface">The typeface to use. If this parameter is null, the typeface of the <paramref name="element"/> will be used.</param> /// <param name="emSize">The font size. If this parameter is null, the font size of the <paramref name="element"/> will be used.</param> /// <param name="foreground">The foreground color. If this parameter is null, the foreground of the <paramref name="element"/> will be used.</param> /// <returns>A FormattedText object using the specified settings.</returns> public static FormattedText CreateFormattedText(FrameworkElement element, string text, Typeface typeface, double? emSize, Brush foreground) { if (element == null) throw new ArgumentNullException(nameof(element)); if (text == null) throw new ArgumentNullException(nameof(text)); if (typeface == null) typeface = element.CreateTypeface(); if (emSize == null) emSize = TextBlock.GetFontSize(element); if (foreground == null) foreground = TextBlock.GetForeground(element); return new FormattedText( text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, typeface, emSize.Value, foreground, null, TextOptions.GetTextFormattingMode(element) ); }