【发布时间】:2016-12-26 19:23:53
【问题描述】:
为元素创建投影的代码:
var compositor = ElementCompositionPreview.GetElementVisual(this.btn).Compositor;
var spriteVisual = compositor.CreateSpriteVisual();
spriteVisual.Size = new Vector2((float)btn.ActualWidth, (float)btn.ActualHeight);
var dropShadow = compositor.CreateDropShadow();
dropShadow.Offset = new Vector3(10, 10, 0);
dropShadow.Color = Colors.Orange;
spriteVisual.Shadow = dropShadow;
ElementCompositionPreview.SetElementChildVisual(this.btn, spriteVisual);
但阴影与按钮重叠。如何使阴影不重叠按钮?
【问题讨论】:
-
问题是由您致电SetElementChildVisual引起的。如文档所述,“[t]他 Visual 被添加为最后一个子元素,因此 在 z 顺序中的其余元素之上。”您必须确保您的阴影在 z 顺序中的按钮视觉下方。
-
我尝试在底部插入 spriteVisual。 compositor.CreateContainerVisual().Children.InsertAtBottom(spriteVisual);但阴影仍然与按钮重叠。
-
stackoverflow.com/a/41283323/1172352 的答案指向一个开源库,如果您更喜欢这种方法,它可以让您在 XAML 标记中以声明方式执行此操作。