2014-03-04 22 views
1

我有一个Windows应用商店应用。我正在寻找添加阴影效果。我考虑过使用Gradiented边框,但我似乎无法让它看起来很正确。我已经尝试将边框的BorderBrush设置为LinearGradientBrush,从背景色变为黑色,但似乎...不合适,是放置它的最佳方式。有没有更好的方法来做到这一点?我应该使用更好的Gradient吗? (非线性?)如何使用XAML/C#向Windows应用商店应用中的控件(框/网格)添加“DropShadow”效果?

我认为基于一些建议,人们已经使用CSS去黑灰色而不是黑色是更好的选择,所以我会在此期间玩弄它。

什么构成'标准'CSS阴影?它有特定的alpha级别吗?它是线性渐变吗?

回答

3

我似乎已经想通了。

注意:此答案仅适用于顶部和底部的投影,而不是全部。

我创建了一个Border,如问题描述,并创建了一个BorderBrush定义如下:

<Border Grid.Row="1" BorderThickness="0,5,0,5"> 
    <Border.BorderBrush> 
     <LinearGradientBrush StartPoint=".5,0" EndPoint=".5,1"> 
      <GradientStop Color="Blue" Offset="0"/> 
      <GradientStop Color="Black" Offset=".03"/> 
      <GradientStop Color="Black" Offset=".98"/> 
      <GradientStop Color="Blue" Offset="1"/> 
     </LinearGradientBrush> 
    </Border.BorderBrush> 
</Border> 

奇怪的是,为了获得在顶部和底部的一个类似的效果,我不得不做出底部GradientStop比顶部更接近边缘。我不确定这是为什么。

这将做什么,如果你有一个Blue边界上的内容,它会创建一个顶部阴影条纹和底部阴影条纹。它现在对我来说工作得很好。

StartPoint/Endpoint在顶部中心和底部中心(在x,0y,然后在x,1y的中途)处定义一个点。例如,在左侧和右侧,您只需要将StartPointEndPoints更改为:StartPoint="0,.5" EndPoint="1,.5"

我不知道如何改变它的所有方式。我认为这可能需要从中心(.5,.5)到角落(0,0),但我还没有得到这个工作。

希望这可以帮助别人。

0

除了使用画笔之外,我们可以自己画画。

<Grid Width="100" Height="100"> 
    <Rectangle Stroke="Black" Margin="5" RadiusX="7" RadiusY="7" Opacity="0.3"/> 
    <Rectangle Stroke="Black" Margin="4" RadiusX="8" RadiusY="8" Opacity="0.25"/> 
    <Rectangle Stroke="Black" Margin="3" RadiusX="9" RadiusY="9" Opacity="0.2"/> 
    <Rectangle Stroke="Black" Margin="2" RadiusX="10" RadiusY="10" Opacity="0.15"/> 
    <Rectangle Stroke="Black" Margin="1" RadiusX="11" RadiusY="11" Opacity="0.1"/> 
    <Rectangle Stroke="Black" Margin="0" RadiusX="12" RadiusY="12" Opacity="0.05"/> 
</Grid> 

这将创建一个黑色阴影周围的网格。

相关问题