多个带圆角的嵌套边框。如何?

时间:2013-12-12 14:35:31

标签: wpf xaml

我想显示由多个不同颜色边框和圆角包围的内容。我尝试了角半径,但在嵌套边框上永远无法获得完美的角(即与父边框的角相邻)。在这种情况下,建议的做法是什么? 以下是我的尝试:

<Border Grid.Row="1"  Grid.Column="1" CornerRadius="3" BorderThickness="3" BorderBrush="#FAFAFA"Background="#FAFAFA" Margin="40,40,40,40" Padding="0">
        <Border.Effect>
            <DropShadowEffect Color="#1f40618c" />
        </Border.Effect>
        <StackPanel>
            <Border CornerRadius="3" BorderThickness="3" BorderBrush="#696B6D" Background="#696B6D"  Margin="0" Padding="0" >
                <Border CornerRadius="2.3" BorderThickness="3" BorderBrush="Black" Margin="0" Padding="32,32,32,16" Background="#102F8C">
                    <Grid />
                </Border>
            </Border>
        </StackPanel>
    </Border>

感谢。

1 个答案:

答案 0 :(得分:1)

您必须考虑到BorderThickness会增加边框控件的总宽度或高度。您可以将其视为边界线的一半位于控件内部而一半位于外部。另一方面,CornerRadius是相对于边界线的中心给出的。

因此,内半径和外半径之间的差异应该等于两个BorderThickness的一半(加上可能是外Padding和内Margin)的总和。

使用嵌套边框,每个BorderThickness为3,外部CornerRadius也为3,这将导致内部CornerRadius为0。

您可以简单地将内部CornerRadius设置为某个合理的值,并为外部值添加3该值:

<Border BorderBrush="Blue" BorderThickness="3" CornerRadius="6">
    <Border BorderBrush="Red" BorderThickness="3" CornerRadius="3">

    </Border>
</Border>