2017-07-29 16 views
7

C#UWPでは、内側のシャドウ効果をどのようにしますか?このようC#UWPツールキットDropShadowPanelの内側のシャドウ

私はちょうど境界線で1つのグリッドを作成しているが、影がグリッド全体を移入されます。

<controls:DropShadowPanel  BlurRadius="5" 
           ShadowOpacity="0.5" 
           OffsetX="0" 
           OffsetY="0" 
           Color="Black"> 
    <Grid BorderBrush="White" BorderThickness="5"/> 
</controls:DropShadowPanel> 

このコントロールで内側のシャドー効果を作る方法は?あなたは塗りつぶしレスRectangleを作成し、Rectangle国境だけのための拡散影を作成するためにDropShadowPanel内に配置できるようDropShadowPanelは、Rectangleを隠すことができ

答えて

7

は注意してください。次に、それをGridの中に置き、Gridをクリップして外側の影をカットします。背景色が必要な場合は、別のRectangleGridに追加し、DropShadowPanelの後に置きます。注意すべき

ことの一つは、あなたがmanuallする必要があるということであるクリッピングについて

サンプルコード

<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> 

結果 enter image description here


y Gridのサイズが変更されるたびにRectのサイズを更新します。代わりに、新しいComposition APIを使用してクリッピングを行うことができます。 -

var visual = ElementCompositionPreview.GetElementVisual(RootGrid); 
var compositor = visual.Compositor; 
visual.Clip = compositor.CreateInsetClip(); 
+1

Thanx、これは素晴らしい作品です。 – user3239349

関連する問題