XAML / UWP добавляет тень к фигурам на холсте - PullRequest
0 голосов
/ 27 мая 2020

Итак, я визуализирую различные формы на холсте, например PowerPoint. Пользователь может использовать CRUD-формы на холсте.

Теперь я хотел бы добавить DropShadow в Shape.

Только я понятия не имею, как это сделать. Кажется, что Community Toolkit не позволяет добавлять отбрасывающую тень в Code-Behind (по крайней мере, документа нет). Другие несколько решений, найденных в Интернете, похоже, применяют способы, которые либо несовместимы с UWP, либо устарели ...

Есть помощь?

1 Ответ

0 голосов
/ 28 мая 2020

Класс DropShadow предоставляет средства создания настраиваемой тени, которую можно применить к SpriteVisual или LayerVisual (поддерево Visuals). Вы можете попробовать использовать его, чтобы добавить тени к вашим фигурам. Сначала создайте новый DropShadow и свяжите его со своим визуалом. Например:

Compositor compositor = ElementCompositionPreview.GetElementVisual(YourShape).Compositor;
var shadowVisual = compositor.CreateSpriteVisual();
Vector2 newSize = new Vector2(0, 0);
if (YourShape is FrameworkElement element)
{
    newSize = new Vector2((float)element.ActualWidth, (float)element.ActualHeight);
}
shadowVisual.Size = newSize;

var dropShadow = compositor.CreateDropShadow();
dropShadow.BlurRadius = 10;
dropShadow.Opacity = 0.3f;
dropShadow.Offset = new Vector3(10,10,10);
dropShadow.Color = Windows.UI.Colors.Black;

shadowVisual.Shadow = dropShadow;

ElementCompositionPreview.SetElementChildVisual(YourShape, shadowVisual);

Для получения дополнительных сведений о DropShadow вы можете обратиться к этому документу .

...