Использование теней в настольном приложении на Winui 3 ⇐ C#

Место общения программистов C#
Anonymous
Использование теней в настольном приложении на Winui 3

Сообщение Anonymous »

Не могли бы вы объяснить, как использовать Shadows в настольном приложении на Winui 3? Я посмотрел на документацию MSDN, и она предлагает использовать классы Themeshadow и Dropshadow. Я выяснил класс Themeshadow, и он работает, но он не позволяет вам настроить тень. Поэтому мне нужен класс Dropshadow, и с ним я больше не мог понять это. MSDN приводит этот простой пример использования класса: < /p>
private async void InitComposition()
{
_compositor = ElementCompositionPreview.GetElementVisual(MyGrid).Compositor;
_imageLoader = ImageLoaderFactory.CreateImageLoader(_compositor);

//Create surface brush and load image
CompositionSurfaceBrush surfaceBrush = _compositor.CreateSurfaceBrush();
surfaceBrush.Surface = await _imageLoader.LoadImageFromUriAsync(new Uri("ms-appx:///Assets/cat.jpg"));

//Create sprite visual
SpriteVisual visual = _compositor.CreateSpriteVisual();
visual.Brush = surfaceBrush;
visual.Size = new Vector2(270, 200);

//Create drop shadow
DropShadow shadow = _compositor.CreateDropShadow();
shadow.BlurRadius = 5;
shadow.Offset = new Vector3(15, 15, -10);
shadow.Color = Colors.DarkGray;

//Associate shadow with visual
visual.Shadow = shadow;
}
< /code>
Я скопировал этот код к себе, и он не сработал для меня по той причине, что мой проект не понимает, что это за класс ImageLoaderFactory. Насколько я понимаю, этот класс загружает картину, которая, в принципе, мне не нужно. Я удалил эту линию, но ничто не работает без нее. Я не понимаю цель классов, которые используются в этом примере, и не понимаю принцип создания тени, поэтому я не мог адаптировать пример к своим потребностям. Было бы здорово, если бы кто -то мог объяснить мне, как использовать все это. Раньше я работал над WPF и добавлял тень, было что -то тривиальное. Необходимо было только добавить эффект свойства любого элемента, и тень работала отлично. Но здесь все по -другому. Как -то слишком сложно. Я хотел бы знать, есть ли какой -то более простой официальный способ включить тень. И я все еще хотел бы понять, как работать с классом Dropshadow и включить тени в любом элементе, и, в частности, в настоящее время моя задача - добавить тень в текстовый блок, чтобы увеличить читабельность текста в ярких областях. Я также не мог найти способ установить текстовый ход для той же читаемости в легких областях. На WPF была специальная собственность для этого, но на Winui 3 этого просто не существует. Помогите мне, пожалуйста.
Обновление:
На данный момент мой код выглядит следующим образом:









< /code>
var compositor = ElementCompositionPreview.GetElementVisual(MyRect2).Compositor;

SpriteVisual visual = compositor.CreateSpriteVisual();
visual.Size = new Vector2(250, 250);

DropShadow dropShadow = compositor.CreateDropShadow();
dropShadow.BlurRadius = 50;
dropShadow.Offset = new Vector3(0, 0, 0);
dropShadow.Color = Colors.Black;

visual.Shadow = dropShadow;

// Apply the drop shadow to a UI element
((ContainerVisual)ElementCompositionPreview.GetElementVisual(MyRect2)).Children.InsertAtTop(visual);
< /code>
Thanks to this, the shadow is displayed but it is displayed on top of the rectangle2, while I expect it to be displayed below it.
enter image description here

Подробнее здесь: https://stackoverflow.com/questions/769 ... on-winui-3

Вернуться в «C#»