WPF界面设计技巧(1)—不规则窗体图文指南
现在我们要把这个资源字典引入程序集,打开“App.xaml”文件,添加下图中红色框内的代码。

|
1
2
3
4
5
6
7
8
9
10
11
12
|
<Application x:Class="不规则窗体.App" xmlns="<A href="http://schemas.microsoft.com/winfx/2006/xaml/presentation">http://schemas.microsoft.com/winfx/2006/xaml/presentation</A>" xmlns:x="<A href="http://schemas.microsoft.com/winfx/2006/xaml">http://schemas.microsoft.com/winfx/2006/xaml</A>" StartupUri="Window1.xaml"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="cnblogs-SkyD.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application> |
然后打开“Window1.xaml”文件的设计视图,点击窗体边缘以选中窗体,依照下图所示,在属性面板中更改AllowsTransparency及WindowStyle属性。
AllowsTransparency指示窗体是否支持透明。
WindowStyle指示窗体边框样式,设为 None 为无边框。

切换到XAML代码视图,依照下图所示,为 Window 元素添加Background和MouseDown属性定义。
Background属性指示窗体的背景,这里引用资源中的“back”,就是我们之前画好的图形啦。
MouseDown是鼠标按下时产生的事件,我们要为之定义一个事件处理函数以实现窗体拖动功能。

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<Window x:Class="不规则窗体.Window1" xmlns="<A href="http://schemas.microsoft.com/winfx/2006/xaml/presentation">http://schemas.microsoft.com/winfx/2006/xaml/presentation</A>" xmlns:x="<A href="http://schemas.microsoft.com/winfx/2006/xaml">http://schemas.microsoft.com/winfx/2006/xaml</A>" Title="Window1" Height="450" Width="450" AllowsTransparency="True" WindowStyle="None" Background="{StaticResource back}" MouseDown="Window_MouseDown"> <Grid> </Grid> </Window> |
在上图的“Window_MouseDown”字符上单击右键,在弹出菜单中选择“定位到事件处理程序”,即会转到“Window1.xaml.cs”代码视图,依照下图输入代码。

|
1
2
3
4
|
private void Window_MouseDown(object sender, MouseButtonEventArgs e) { if(e.ChangedButton==MouseButton.Left)this.DragMove(); } |
至此就完成了不规则窗体的创制了。
编译运行看看:

嗯嗯,效果很酷的说,你说什么?没有关闭按钮?这么好看的界面你舍得关吗?
好吧,要实现关闭按钮也很简单啦,自己搞个按钮在上面,在 Click 事件中执行 this.Close(); 就OK啦,我是懒得搞了哈。
此效果在任何装有.Net框架3.0的机器上都可以运作,不用再羡慕Adobe AIR的外观了,WPF可以做得更好!
再来张Vista切换窗口时的图:

作者:Meteor
出处:http://www.cnblogs.com/osmeteor/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

浙公网安备 33010602011771号