2011-11-07 91 views
2

我一直想在WPF纯粹的重建this GUI,和我有问题:WPF中的高级效果?

enter image description here

  • 阴影。主要元素上的阴影不会显示在填充内 - 在WPF中使用DropShadowEffect时,它的确如此。到目前为止,我还没有找到解决办法。
  • 背景图像 - 主元件中有一个微小的图案,对角线之一。但在WPF中,我不能使用这样的背景图像。有机会,我只是想念一些东西。
  • 轻微插图,在主元件(在顶部) - 不容易被复制。

所以无论如何,我想我的问题是,我怎样才能在WPF中完成这些类型的效果?

+4

发布您的代码! –

+2

我不知道你是如何评价的阴影是什么,但是如果你不定义阴影元素的背景,其子女将显示阴影太...所以只定义背景到你应用效果的元素只能在外面看到。 对角线图案不一定是图像 - 看这里http://blog.pixelingene.com/2008/09/quick-tip-to-get-a-striped-background/ 插图可以模拟通过画一条线...放大那张图片,你会看到这只是一条较暗的线条,可以产生这种效果。 – Leo

+0

我记得你试图隐藏半透明矩形内的阴影。现在,你想要显示影子?不清楚...请张贴代码和更多细节(评论)。 – Nayan

回答

2

希望这个片段将指向您在正确的方向:

<Grid> 
    <Border x:Name="Blur" 
      BorderThickness="5" 
      CornerRadius="5" 
      BorderBrush="#7F000000"> 
     <Border.Effect> 
      <BlurEffect Radius="8" /> 
     </Border.Effect> 
    </Border> 
    <Border x:Name="Outter" 
      BorderBrush="#CCD3D3D3" 
      BorderThickness="1" 
      CornerRadius="5" 
      Margin="2"> 
     <Border.Background> 
      <ImageBrush Viewbox="0,0,45,38" 
         ViewboxUnits="Absolute" 
         Viewport="0,0,45,38" 
         ViewportUnits="Absolute" 
         TileMode="Tile" 
         ImageSource="<SomeImageThatIsATileOfThePattern>" 
         Opacity="0.3" 
         Stretch="Fill" /> 
     </Border.Background> 
    </Border> 
    <Border x:Name="Inner" 
      BorderThickness="0,1,0,0" 
      CornerRadius="5" 
      Margin="2,4,2,2" 
      BorderBrush="#7FD3D3D3" /> 
    <ItemsControl Background="HotPink" 
        Margin="11" 
        Height="21" /> 
</Grid> 

结果是:

The result

[我用一个通用的图像,是想说明的重复。原始图像是W50xH38大小 - 希望重复是明显]

播放与Viewbox控件和视口的值调整到你的形象。

当然,ItemsControl应该不会有粉红色的背景和它的高度不应该是一个常数,它用于演示目的已完成。

+0

哇,这太好了!迄今为止,它的工作非常完美。 :D一个问题:我如何防止模糊的边界在外部流血? – mattsven

+0

另外,我很难让这个影子看起来很逼真。 – mattsven