diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs b/Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs new file mode 100644 index 000000000..141fa6e27 --- /dev/null +++ b/Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Tango.SharedUI.Controls +{ + [ContentProperty(nameof(Text))] + public class FastTextBlock : Control + { + private FormattedText _formattedText; + + static FastTextBlock() + { + + } + + public FastTextBlock() + { + Loaded += FastTextBlock_Loaded; + } + + private void FastTextBlock_Loaded(object sender, RoutedEventArgs e) + { + Init(); + } + + public static readonly DependencyProperty TextProperty = + DependencyProperty.Register( + "Text", + typeof(string), + typeof(FastTextBlock), + new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.AffectsMeasure | FrameworkPropertyMetadataOptions.AffectsRender, + (o, e) => ((FastTextBlock)o).TextPropertyChanged((string)e.NewValue))); + + private void TextPropertyChanged(string text) + { + Init(); + } + + private void Init() + { + if (Text != null) + { + var typeface = new Typeface( + FontFamily, + FontStyle, FontWeight, FontStretch); + + _formattedText = new FormattedText( + Text, CultureInfo.CurrentCulture, + FlowDirection.LeftToRight, typeface, FontSize, Foreground); + } + } + + + public string Text + { + get { return (string)GetValue(TextProperty); } + set { SetValue(TextProperty, value); } + } + + protected override void OnRender(DrawingContext drawingContext) + { + if (_formattedText != null) + { + drawingContext.DrawText(_formattedText, new Point()); + } + } + + protected override Size MeasureOverride(Size constraint) + { + return _formattedText != null + ? new Size(_formattedText.Width, _formattedText.Height) + : new Size(); + } + } +}
\ No newline at end of file |
