形成角落切角

时间:2015-04-09 16:50:51

标签: wpf c#-4.0

如何将表格中的角落切成一定角度? 也许与Viewbox有关? form corners

1 个答案:

答案 0 :(得分:0)

这有点笨拙并且有一些警告,但它几乎可以满足您的要求。它只是一个包含边框的透明窗口。边框上应用了一个Clip蒙版,可以从角落处敲出20 x 20 x 20像素的三角形边框。如果你想包括' trenches'在上图的两侧,您需要做的就是在Border的PathFigure中再添加几个LineSegments。

您目前无法调整窗口大小。如果确实实现了大小调整,则需要挂钩Border的SizeChanged事件,以动态更改Borderbehind中Border的剪切路径的坐标。

窗口没有最大化/最小化/关闭控制。您需要自己实施这些。不应该是一个太大的工作。

<Window x:Class="MvvmLight4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:ignore="http://www.ignore.com"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Width="1024"
        Height="768"
        AllowsTransparency="True"
        Background="Transparent"
        WindowStartupLocation="CenterScreen"
        WindowStyle="None"
        mc:Ignorable="d ignore"
        x:Name="myWindow">

    <Border Background="Black">
        <Border.Clip>
            <PathGeometry>
                <PathFigure StartPoint="0,0">
                    <LineSegment Point="20,0" />
                    <LineSegment Point="1004,0" />
                    <LineSegment Point="1024,20" />
                    <LineSegment Point="1024,748" />
                    <LineSegment Point="1004,768" />
                    <LineSegment Point="20,768" />
                    <LineSegment Point="0,748" />
                    <LineSegment Point="0,20" />
                    <LineSegment Point="20,0" />
                </PathFigure>
            </PathGeometry>
        </Border.Clip>

        <!-- All of your everything else needs to go inside the border -->

    </Border>

</Window>