#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