UWP внутренняя тень с LinearGradientBrush - PullRequest
0 голосов
/ 16 января 2020

есть ли способ сделать такой эффект с LinearGradientBrush? enter image description here

Я также проверял этот вопрос: C# Инструментарий UWP DropShadowPanel внутренняя тень

В ответ они использовали DropShadowPanel с Rectangle, который имеет StrokeThickness="10". Но это создает границу серого цвета. Мне интересно, есть ли способ добиться этого либо с LinearGradientBru sh или без StrokeThickness, установленной на 10?

Я хотел бы сохранить исходный размер сетки и не вырезать его каким-либо образом.

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Вы можете использовать DropShadowPanel, как и в другом ответе, и изменить внутреннюю обводку прямоугольника на белый (или любой другой фон вашей страницы).

<Grid Width="400" Height="200">
    <Grid.Clip>
        <RectangleGeometry Rect="0,0,400,200" />
    </Grid.Clip>
    <Rectangle Fill="Yellow" />
    <TextBlock Text="Some text" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    <controls:DropShadowPanel HorizontalContentAlignment="Stretch"
                              BlurRadius="50"
                              ShadowOpacity="1"
                              Color="Black">
        <Rectangle Stroke="White"
                   StrokeThickness="10" />
    </controls:DropShadowPanel>
</Grid>

Это создаст следующее:

enter image description here

0 голосов
/ 16 января 2020

Если вам не нужна граница, вы можете обрезать ее, настроив Grid.Clip

<Grid Width="400"
      Height="200"
      Margin="24">
    <Grid.Clip>
        <RectangleGeometry Rect="20,20,360,160" />
    </Grid.Clip>
    <Rectangle x:Name="BackgroundColor"
       Fill="LightSteelBlue" />
    <controls:DropShadowPanel x:Name="InnerShadow"
                      HorizontalContentAlignment="Stretch"
                      BlurRadius="40"
                      ShadowOpacity="1"
                      Color="Black">
        <Rectangle x:Name="BorderColor"
           Stroke="LightGray"
           StrokeThickness="20" />
    </controls:DropShadowPanel>
</Grid>

В коде я отрегулировал параметры DropShadowPanel, чтобы сделать тени более заметными.

Imgur

Но LinearGradientBrush, возможно, не сможет этого сделать, потому что это линейный градиент. Например, вы можете создать цвет градиента слева направо от синего к черному, но вы не можете постепенно исчезать от центра к центру. Если вам это нужно, вы можете попробовать RadialGradientBru sh в WindowsCommunityToolkit.

С наилучшими пожеланиями.

...