12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using Avalonia;
- using Avalonia.Controls;
- using Avalonia.Controls.Platform;
- using Avalonia.Controls.Shapes;
- using Avalonia.Layout;
- using Avalonia.Media;
- using Avalonia.Media.TextFormatting;
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace InABox.Avalonia.Components.ImageEditing;
- internal class TextObject : IImageEditorObject
- {
- public IBrush? PrimaryBrush { get; set; }
- public Point Point { get; set; }
- public Size Size { get; set; }
- public string Text { get; set; } = "";
- private TextBlock Control = new();
- public Control GetControl() => Control;
- public void Update()
- {
- Canvas.SetLeft(Control, Point.X);
- Canvas.SetTop(Control, Point.Y);
- var font = new Typeface(Control.FontFamily);
- var formatted = new FormattedText(Text, CultureInfo.CurrentCulture, FlowDirection.LeftToRight, font, 12, PrimaryBrush);
- var width = formatted.WidthIncludingTrailingWhitespace;
- var height = formatted.Height;
- var scaleFactor = Math.Min(Size.Width / width, Size.Height / height);
- Control.FontSize = 12 * scaleFactor;
- Control.Text = Text;
- Control.Foreground = PrimaryBrush;
- }
- }
|