如何实现一个不规则形状的WPF窗口

在WPF中要实现不规则形状的窗口其实很简单,首先我们要设置几个Window的属性,如下:

None.gif < Window  x:Class ="BorderlessWindow.Window1"
None.gifxmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
None.gif    Title
="BorderlessWindow"  Height ="300"  Width ="300"
None.gif        WindowStyle
="None"  Background ="{x:Null}"  AllowsTransparency ="True"
None.gif    
>

这里我们设置了WindowStyle="None",这表示去掉窗口的边框和标题栏;Background="{x:Null}"表示背景为透明,这一步必须做,因为默认的背景色是白色的;AllowsTransparency="True"是与WindowsStyle.None配合使用的,如果你在此时把WindowStyle="None"去掉,会收到一个错误。

在主窗口中,我们可以放入以下一段代码:

None.gif      < Grid >
None.gif    
< Border  CornerRadius ="5,5,5,5"  Background ="#FF777777"  Height ="Auto" >   </ Border >
None.gif    
</ Grid >

 

这表示一个带有圆弧弯角的矩形,运行结果如下所示:

borderlesswindow1.jpg

但这样是不是就实现了呢?当然不是,现在运行窗口你会发现一些问题——无法拖动、无法关闭。不过不用担心,实现这些功能并不难,因为Window提供了相应的函数来实现拖动和关闭——DragMove和Close。

拖动的话,我们可以为Window添加一个MouseLeftButtonDown的事件处理程序,并在里面调用DragMove就可以了(不需要任何参数):

None.gif          public   void  DragWindow( object  sender, MouseButtonEventArgs args)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
this.DragMove();
ExpandedBlockEnd.gif        }

至于关闭,我们可以添加一个按钮,然后在Click事件处理程序中调用Close:

None.gif          public   void  CloseWindow( object  sender, RoutedEventArgs args)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
this.Close();
ExpandedBlockEnd.gif        }

最后的实现效果如下:

borderlesswindow2.jpg

为了让关闭按钮更别致些,我对Button的Template做了重载(不过这不是重点emsmilep.gif)。

完整的实现,大家自己看代码吧。点击这里下载代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值