/// <summary> /// Add element and highlight /// </summary> /// <param name="el"></param> /// <param name="txt"></param> public void AddElement(A11yElement el, string txt = "!") { if (el != null) { if (!Items.ContainsKey(el)) { if (this.IsVisible && !el.BoundingRectangle.IsEmpty && this.Dimensions.IntersectsWith(el.BoundingRectangle)) { var l = (el.BoundingRectangle.Left - Dimensions.Left) / DPI - GapWidth; var t = (el.BoundingRectangle.Top - Dimensions.Top) / DPI - GapWidth; var bord = new Border() { BorderBrush = Brush, BorderThickness = new Thickness(4), Width = el.BoundingRectangle.Width / DPI + GapWidth * 2, Height = el.BoundingRectangle.Height / DPI + GapWidth * 2, }; TextBlock tb = null; if (txt != null) { tb = new TextBlock() { Text = txt, Background = Brush, Foreground = new SolidColorBrush(Colors.White), Tag = el, Width = 28, TextAlignment = TextAlignment.Center, Height = 28 }; if (TBCallback != null) { tb.MouseDown += TBCallback; } canvas.Children.Add(tb); tb.SetValue(Canvas.LeftProperty, l + el.BoundingRectangle.Width / DPI - tb.Width + GapWidth * 2); tb.SetValue(Canvas.TopProperty, t); tb.SetValue(Canvas.ZIndexProperty, 1); } canvas.Children.Add(bord); bord.SetValue(Canvas.LeftProperty, l); bord.SetValue(Canvas.TopProperty, t); bord.SetValue(Canvas.ZIndexProperty, 0); Items[el] = new GroupHighlighterItem(bord, tb); } } else { Items[el].AddRef(); } } }
/// <summary> /// Add element and highlight /// </summary> /// <param name="el"></param> /// <param name="txt"></param> public void AddElementRoundBorder(A11yElement el, string txt = "!") { if (el != null) { if (!Items.ContainsKey(el)) { if (this.IsVisible && !el.BoundingRectangle.IsEmpty && this.Dimensions.IntersectsWith(el.BoundingRectangle)) { var l = (el.BoundingRectangle.Left - Dimensions.Left) / DPI; var t = (el.BoundingRectangle.Top - Dimensions.Top) / DPI; var bord = new Border() { BorderBrush = Application.Current.Resources["SearchAndIconForegroundBrush"] as SolidColorBrush, BorderThickness = new Thickness(2), Background = Application.Current.Resources["SecondaryBGBrush"] as SolidColorBrush, Width = 28, Height = 28, CornerRadius = new CornerRadius(28), }; TextBlock tb = null; if (txt != null) { tb = new TextBlock() { Text = txt, Tag = el, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, Foreground = Application.Current.Resources["PrimaryFGBrush"] as SolidColorBrush, }; if (TBCallback != null) { tb.MouseDown += TBCallback; } bord.Child = tb; } canvas.Children.Add(bord); bord.SetValue(Canvas.LeftProperty, GetMidPoint(l, el.BoundingRectangle.Width, bord.Width)); bord.SetValue(Canvas.TopProperty, GetMidPoint(t, el.BoundingRectangle.Height, bord.Height)); bord.SetValue(Canvas.ZIndexProperty, 0); Items[el] = new GroupHighlighterItem(bord, tb); } } else { Items[el].AddRef(); } } }