Тестирование хита в Microsoft.UI.Composition в WinUI 3

#c# #.net #uwp #winui #winui-3

Вопрос:

Я использую Microsoft.UI.Composition пространство имен в WinUI 3 для визуализации визуальных элементов на a Canvas как таковое:

  internal Compositor _compositor; // Compositor of Canvas control
 internal ContainerVisual _root; // Container of Canvas control
 var roundedRectangle = _compositor.CreateRoundedRectangleGeometry();
                    roundedRectangle.Size = new Vector2(200, 150);
                    roundedRectangle.CornerRadius = new Vector2(10, 10);

                    var spriteShape = _compositor.CreateSpriteShape(roundedRectangle);
                    spriteShape.FillBrush = _compositor.CreateColorBrush(Colors.Transparent);
                    spriteShape.StrokeBrush = _compositor.CreateColorBrush((Color)Application.Current.Resources["SystemAccentColor"]);
                    spriteShape.StrokeThickness = 2;
                    spriteShape.Offset = new Vector2(2, 2);
                    
                    var shapeVisual = StmVisual._compositor.CreateShapeVisual();
                    shapeVisual.Size = new Vector2(204, 154);
                    shapeVisual.Offset = new Vector3(10, 10, 0);
                    shapeVisual.Shapes.Add(spriteShape);
                    shapeVisual.IsHitTestVisible = true;
                    _root.Children.InsertAtTop(shapeVisual);
 

Однако, когда я пытаюсь запустить тестирование с Canvas помощью VisualTreeHelper.FindElementsInHostCoordinates, это ни к чему не приводит, потому что это и есть ShapeVisual , и нет UIElement . Как можно попасть на тест для ShapeVisual ? Нужно ли мне копаться в CanvasGeometry.FillContainsPoint() Win2D или есть более простой способ?

Комментарии:

1. Проверка Wice, этот проект обрабатывает тестирование попаданий в Windows.UI.Composition, которое аналогично Microsoft.UI.Composition, github.com/aelyo-softworks/Wice