注意DropShadowPanel
可以掩蓋Rectangle
,這樣你就可以創建一個填充更少Rectangle
並將其放置一個DropShadowPanel
裏面創建只有Rectangle
的邊界擴展陰影。然後,您只需將它放在Grid
中,然後剪下Grid
以切斷外部陰影。如果您想要背景顏色,只需將另一個Rectangle
添加到Grid
並將其放置在DropShadowPanel
之後。
示例代碼
<Grid Width="400"
Height="200"
Margin="24">
<Grid.Clip>
<RectangleGeometry Rect="0,0,400,200" />
</Grid.Clip>
<Rectangle x:Name="BackgroundColor"
Fill="LightSteelBlue" />
<controls:DropShadowPanel x:Name="InnerShadow"
HorizontalContentAlignment="Stretch"
BlurRadius="15"
ShadowOpacity="0.5"
Color="Black">
<Rectangle x:Name="BorderColor"
Stroke="LightGray"
StrokeThickness="10" />
</controls:DropShadowPanel>
</Grid>
結果
關於裁剪
有一點要注意的是,你將需要手冊冊y每當Grid
的大小發生變化時,更新Rect
的大小。或者,您可以使用新的合成API來剪輯 -
var visual = ElementCompositionPreview.GetElementVisual(RootGrid);
var compositor = visual.Compositor;
visual.Clip = compositor.CreateInsetClip();
Thanx,這很好。 – user3239349