题
我试图创建一个带有圆角的边框和它的上半部分的一大亮点。我使用的是椭圆形径向渐变,边框的上半部分重叠,给的亮点,但我无法弄清楚如何防止椭圆着色边框的角落。下面是从Kaxaml截图:
和这里的XAML代码:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="DarkGray">
<Grid Width="256" Height="256">
<Border CornerRadius="16" Background="Black" Margin="4">
<Border Background="Gray" Margin="32">
<TextBlock Foreground="Black" Text="1" FontFamily="Trebuchet MS" FontSize="96pt"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Border>
<Border CornerRadius="16" ClipToBounds="True">
<Ellipse>
<Ellipse.Fill>
<RadialGradientBrush>
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Transparent" Offset="1"/>
</RadialGradientBrush>
</Ellipse.Fill>
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="3" ScaleY="2" CenterX="128" CenterY="128"/>
<TranslateTransform Y="-235"/>
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
</Border>
<Border CornerRadius="16" BorderThickness="8" BorderBrush="Black"/>
</Grid>
</Page>
我怎样才能阻止右上角区域的影响而椭圆形的阴影?
我已经试过玩弄OpacityMask
,但我必须承认,我真的不知道如何使用它,尤其是与椭圆被转化为渲染。无论我尝试中,椭圆或者完全消失或完全不受影响。
任何帮助,将不胜感激。
预先感谢。
解决方案
首先,它看起来很好,当我编译,并在Visual Studio中运行你的代码。
其次,你为什么不利用这个RadialGradientBrush
作为第一Background
的Border
?是这样的:
<Border CornerRadius="16" >
<Border.Background>
<RadialGradientBrush Center=".5 0" GradientOrigin=".5 0" RadiusX="1" >
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Black" Offset="1"/>
</RadialGradientBrush>
</Border.Background>
</Border>
其他提示
除了使用ClipToBounds
或OpacityMask
的,余结束了使用径向渐变为背景,以额外Border
元件。由于阿尔法 - 小鼠的小费。
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Background="DarkGray">
<Grid Width="256" Height="256">
<Border CornerRadius="16" Background="Black" Margin="4">
<Border Background="Gray" Margin="32">
<TextBlock Foreground="Black" Text="1" FontFamily="Trebuchet MS" FontSize="96pt"
HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Border>
<Border CornerRadius="16" Margin="4">
<Border.Background>
<RadialGradientBrush>
<RadialGradientBrush.Transform>
<TransformGroup>
<ScaleTransform ScaleX="3" ScaleY="2" CenterX="128" CenterY="128"/>
<TranslateTransform Y="-235"/>
</TransformGroup>
</RadialGradientBrush.Transform>
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="Transparent" Offset="1"/>
</RadialGradientBrush>
</Border.Background>
</Border>
<Border CornerRadius="16" BorderThickness="8" BorderBrush="Black"/>
</Grid>
</Page>
和这里的最终外观:
感谢。
不隶属于 StackOverflow