WPF 用圆角Border包围带背景色的面板(如StackPanel), 明显看到边角刺出了圆角边, 请问如何解决?

Plert 2013-04-15 02:23:45
如题,想法很简单,做一个圆角带边线的边框容器。

由于WPF中的大部分面板自身不带圆角边功能,所以想用Border修饰一下,结果却发现如果Border修饰的面板如果带上了背景色,就明显能看到它的四个棱角刺破了Border的圆角的情况,如下图所示


设置了Border的ClipToBounds为True,但仍无法阻止内部面板的背景色溢出来。
如果强制设置内部面板的Clip,那Border的作用就没有了,而且也无法加边框线颜色。

怎么办啊?有没有WPF界面高手能帮忙解决下?
小弟先在此谢谢了!
...全文
5151 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
metoer 2014-07-15
  • 打赏
  • 举报
回复 1
也刚刚遇到这个问题了
好好开车 2014-07-01
  • 打赏
  • 举报
回复 1
我也想知道怎么处理这个问题
chuchur 2014-04-08
  • 打赏
  • 举报
回复 1
demo

<Style TargetType="Border" x:Key="test">
        <Setter Property="Background" Value="#32000000"/>
        <Setter Property="Margin" Value="8"/>
        <Setter Property="Width" Value="70"/>
        <Setter Property="Height" Value="70"/>
        <Setter Property="Clip">
            <Setter.Value>
                <EllipseGeometry RadiusX="35" RadiusY="35" Center="35,35" />
            </Setter.Value>
        </Setter>
    </Style>
<Border Style="{DynamicResource test}"></Border>
chuchur 2014-04-08
  • 打赏
  • 举报
回复 3
WPF 里面的裁剪可以灵活的使用 ..你可以使用clip 来裁剪..这样搞

<Border x:Name="border" Background="Blue" CornerRadius="20" Height="100" Width="100">
  <Border.Clip>
  <RectangleGeometry RadiusX="{Binding ElementName=border,Path=CornerRadius,Converter={StaticResource MyConverterForCornerRadiusToDouble}}" 
RadiusY="{Binding ElementName=border,Path=CornerRadius,Converter={StaticResource MyConverterForCornerRadiusToDouble}}" 
Rect="0,0,100,100"/>
  </Border.Clip>
  <Grid Background="Red"/>
 </Border>
不要给border 设置圆角. 你应该裁剪border 这样他里面的内容才不会溢出...
在路上20130607 2013-04-16
  • 打赏
  • 举报
回复 1
背景色设置成一样 或者透明
assky124 2013-04-16
  • 打赏
  • 举报
回复 1
背景色设置成一样啊。
Plert 2013-04-16
  • 打赏
  • 举报
回复
引用 1 楼 assky124 的回复:
里面的控件设置属性 Margin = "5"
恐怕这样不行,设置里面面板的边距的话能看到Border与里面面板的间距空白,达不到要求
Plert 2013-04-16
  • 打赏
  • 举报
回复
引用 3 楼 assky124 的回复:
背景色设置成一样啊。
背景色设置成一样不行,还是老样子,不信你去Blend里面试试?
Plert 2013-04-16
  • 打赏
  • 举报
回复
引用 4 楼 luoSaiMingJavaAndC 的回复:
背景色设置成一样 或者透明
对于Border里面只有一个单一的容器,这确实可以,但是我这儿的实际情况是Border本身背景必须透明,且里面是一个Grid,Grid里面又包含了各种不同背景色的Panel 这样一来,首当其冲位于Grid最顶上的Row的Panel就干掉了Border上面的两个圆角,这还不包括下面的情况,唉......
assky124 2013-04-15
  • 打赏
  • 举报
回复
里面的控件设置属性 Margin = "5"

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧