具有一个圆角的RectangleGeometry

时间:2011-08-22 12:03:42

标签: c# .net wpf xaml

我想要一个带有边框和右上角圆角的画布。到目前为止我所做的是将画布放在边框内并围绕右上角。我还需要在画布上围绕同一个角落。使用一个剪辑我遇到了一个问题,即RectangleGeometry不会让我绕过一个角落,我怎么能解决这个问题?有没有更好的方法呢?

<Border Name="uiBorder" Background="Black" BorderBrush="White"
    BorderThickness="1, 2, 1, 1" CornerRadius="0, 4, 0, 0">
    <Canvas Background="Gray" Name="uiCanvas" Margin="0, 0, 0, 0">
        <Canvas.Clip>
            <RectangleGeometry RadiusX="4" RadiusY="4">
                <RectangleGeometry.Rect>
                    <MultiBinding Converter="{StaticResource convertor}">
                        <Binding ElementName="uiBorder" Path="ActualWidth" />
                        <Binding ElementName="uiBorder" Path="ActualHeight"/>
                    </MultiBinding>
                </RectangleGeometry.Rect>
            </RectangleGeometry>
        </Canvas.Clip>  
        <Image Name="uiImage" />
    </Canvas>
</Border>

1 个答案:

答案 0 :(得分:1)

一些XAML WUlululu的时间:

<Grid>
    <Border Name="mask" Background="White" CornerRadius="0, 4, 500, 0"/>
    <Border Name="uiBorder" Background="Black" BorderBrush="White" BorderThickness="1, 2, 1, 1" CornerRadius="0, 4, 500, 0">
        <Canvas Background="Gray" Name="uiCanvas" Margin="0, 0, 0, 0">
            <Canvas.OpacityMask>
                <VisualBrush Visual="{Binding ElementName=mask}"/>
              </Canvas.OpacityMask>
            <Image Name="uiImage" />
        </Canvas>
    </Border>
</Grid>

如果uiBorder的背景为白色,则可以使用它而不是额外的“蒙版”边框。