WPF中的高级特效?

3

我一直在尝试纯粹使用WPF重新创建这个GUI界面,但是遇到了问题:

enter image description here

  • 阴影。主元素上的阴影在填充内部不显示 - 在WPF中使用DropShadowEffect时会显示。目前我还没有找到解决办法。
  • 背景图片 - 主元素上有一个轻微的图案,一个对角线。但在WPF中,我不能像这样使用背景图片。很可能是我错过了什么。
  • 主元素中的轻微插入(在顶部)-不容易复制。

总之,我的问题是,我如何在WPF中实现这些效果?


2
我不确定你在说阴影方面的内容,但是如果你没有为被阴影覆盖的元素定义背景,那么它的子元素也会显示出阴影...所以只需为应用效果的元素定义一个背景,它就只会在外部可见。对角线图案不一定要是图片-在这里看看http://blog.pixelingene.com/2008/09/quick-tip-to-get-a-striped-background/可以通过绘制一条线来模拟插入效果...放大该图像,您将看到只是一个更暗的线条产生了这种效果。 - Leo
我记得你曾试图将阴影隐藏在半透明矩形内。现在,你想要显示阴影?不是很清楚,请发布代码和更多细节(注释)。 - Nayan
1个回答

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>

结果如下:

结果是:

结果

通过调整Viewbox和Viewport的值来适应您的图像。

当然,ItemsControl不应该有粉色背景,其高度也不应该是一个常数,这只是为了演示目的。


哇,这太棒了!到目前为止它完美地工作了。 :D 一个问题:我如何防止模糊边框从内部渗入Outer? - mattsven
另外,我很难让阴影看起来非常逼真。 - mattsven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接