WPF(1 ) 圆角窗体

有两种情况,第一种事设置window的background是transparent;另一种情况是改变窗听的region第一种: 然后再放置一个圆角的border或者rectangle。第二种: 向window的sizechanged添加Onsizechanged private void Onsizechanged(object sender, SizeChangedE
摘要由CSDN通过智能技术生成

有两种情况,第一种事设置window的background是transparent;另一种情况是改变窗听的region

第一种:

 <..... AllowsTransparency="True" WindowStyle="None" ResizeMode="NoResize" Background="#00000000">

然后再放置一个圆角的border或者rectangle。

第二种:

<~~~~~~SizeChanged="Onsizechanged">

 向window的sizechanged添加Onsizechanged

 private void Onsizechanged(object sender, SizeChangedEventArgs e)
        {
            System.Windows.Rect r = new System.Windows.Rect(e.NewSize);
            RectangleGeometry gm = new RectangleGeometry(r, 7, 7); // 40 is radius here
            ((UIElement)sender).Clip = gm; 
        }


我倾向于第二种方法,据说Background="#00000000 会有bug~~~~~

还有其他方法,不是很了解,请参考


Jaime Rodriguez 
On Windows Phone, Windows Presentation Foundation, Silverlight and Windows 7

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 WPF ProgressBar 中设置圆角,可以使用样式(Style),具体步骤如下: 1. 在 XAML 中定义一个样式,设置 TargetType 为 ProgressBar: ```xaml <Style TargetType="ProgressBar"> ``` 2. 在样式中添加 ControlTemplate,覆盖 ProgressBar 的默认模板: ```xaml <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ProgressBar"> <!-- 在此添加模板内容 --> </ControlTemplate> </Setter.Value> </Setter> ``` 3. 在 ControlTemplate 中添加一个 Border 元素,作为 ProgressBar 的容器,并设置圆角: ```xaml <Border CornerRadius="10" BorderThickness="1" BorderBrush="Gray"> <Grid x:Name="PART_Track"> <!-- 在此添加 Track(进度条背景)的内容 --> </Grid> <Grid x:Name="PART_Indicator"> <!-- 在此添加 Indicator(进度条显示)的内容 --> </Grid> </Border> ``` 其中,CornerRadius 属性设置圆角半径,BorderThickness 和 BorderBrush 属性设置边框样式。 4. 在 ControlTemplate 中设置 Indicator 的宽度和圆角: ```xaml <Path x:Name="Indicator" Fill="{TemplateBinding Foreground}" Data="M 0,0 L 1,0 1,1 0,1 Z"> <Path.Clip> <RectangleGeometry RadiusX="10" RadiusY="10" Rect="0,0,{TemplateBinding ActualWidth},{TemplateBinding ActualHeight}"/> </Path.Clip> </Path> ``` 其中,Path 元素用于绘制进度条,Clip 属性用于设置 Indicator 的形状,RadiusX 和 RadiusY 属性设置圆角半径。 完整代码示例: ```xaml <Style TargetType="ProgressBar"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ProgressBar"> <Border CornerRadius="10" BorderThickness="1" BorderBrush="Gray"> <Grid x:Name="PART_Track"> <!-- 在此添加 Track(进度条背景)的内容 --> </Grid> <Grid x:Name="PART_Indicator"> <Path x:Name="Indicator" Fill="{TemplateBinding Foreground}" Data="M 0,0 L 1,0 1,1 0,1 Z"> <Path.Clip> <RectangleGeometry RadiusX="10" RadiusY="10" Rect="0,0,{TemplateBinding ActualWidth},{TemplateBinding ActualHeight}"/> </Path.Clip> </Path> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值