[转][小结][三种方法]实现WPF不规则窗体
2013-06-15 08:43
169 查看
实现WPF不规则窗体的三种常用的方法如下:
1.使用Blend等工具绘制一个不规则xaml,然后作为窗体的背景。这个可以参考xiaowei0705的这篇博文:WPF制作不规则的窗体 。
2.给window的Clip属性赋Path值。这个可以参考DebugLZQ前面的博文:WPF Effect Clip以及Transform 。
3.使用透明背景的PNG图像。本文将要讲述。
本文将要讲述的这种方法,可以说一点技术含量都没有,基本不用动手编写代码。前提是你得有合适的透明背景的PNG图像。
我们假设你已经完成了PNG图像的制作(当然为了演示的话,down一个也行),那么这个不规则窗体实现如下:
解释下这个xaml需要注意的属性设置:
为Gird订阅的MouseLeftButtonDown路由事件,是为了实现窗体的拖动。事件处理如下:
实现效果如下:
效果不清楚?再来两张
题外话:越来越发现发到博客园首页的博文质量是越来越差了,很多文章根本没有一点价值,纯垃圾~
真心建议发到首页的博文,希望博文的作者能够花点时间,分享有价值的东西,不要哗众取宠~试想:你发到首页的博文你自己以后都不愿意去看的,何况别人?也希望博客园团队加强监管力度!
我们写博文的目的是为了分享,分享本来就是一种积累,写博文的过程可以看做是一种沉淀,所以这是一个双赢的事。个人愚见,欢迎批评指正~
“只要人人都献出一点爱,世界将变成美好的人间...”
Update:
需要运行时更新窗体样式怎么办?即更新图片即可:
原文地址:/article/4784323.html
1.使用Blend等工具绘制一个不规则xaml,然后作为窗体的背景。这个可以参考xiaowei0705的这篇博文:WPF制作不规则的窗体 。
2.给window的Clip属性赋Path值。这个可以参考DebugLZQ前面的博文:WPF Effect Clip以及Transform 。
3.使用透明背景的PNG图像。本文将要讲述。
本文将要讲述的这种方法,可以说一点技术含量都没有,基本不用动手编写代码。前提是你得有合适的透明背景的PNG图像。
我们假设你已经完成了PNG图像的制作(当然为了演示的话,down一个也行),那么这个不规则窗体实现如下:
<Window x:Class="WPFSharpWindow.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="412" Width="528" AllowsTransparency="True" WindowStyle="None" OpacityMask="White" Background="Transparent"> <Grid MouseLeftButtonDown="Grid_MouseLeftButtonDown"> <Image Stretch="Fill" Source="/WPFSharpWindow;component/cow.png" /> </Grid> </Window>
解释下这个xaml需要注意的属性设置:
allowstransparency="True"- 允许透明
background="Transparent"- 设置背景透明
windowstyle="None"- 去掉边框
opacitymask="White"- 设置白色透明
为Gird订阅的MouseLeftButtonDown路由事件,是为了实现窗体的拖动。事件处理如下:
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { this.DragMove(); }
实现效果如下:
效果不清楚?再来两张
题外话:越来越发现发到博客园首页的博文质量是越来越差了,很多文章根本没有一点价值,纯垃圾~
真心建议发到首页的博文,希望博文的作者能够花点时间,分享有价值的东西,不要哗众取宠~试想:你发到首页的博文你自己以后都不愿意去看的,何况别人?也希望博客园团队加强监管力度!
我们写博文的目的是为了分享,分享本来就是一种积累,写博文的过程可以看做是一种沉淀,所以这是一个双赢的事。个人愚见,欢迎批评指正~
“只要人人都献出一点爱,世界将变成美好的人间...”
Update:
需要运行时更新窗体样式怎么办?即更新图片即可:
private void button1_Click(object sender, RoutedEventArgs e) { var uriSource = new Uri(@"/WPFSharpWindow;component/HotPot.png", UriKind.Relative); imgBackground.Source=new BitmapImage(uriSource); }
原文地址:/article/4784323.html
相关文章推荐
- Python实现矩阵相乘的三种方法小结
- [小结][N种方法]实现WPF不规则窗体
- PHP下用rmdir实现删除目录的三种方法小结
- PHP下用rmdir实现删除目录的三种方法小结
- update的三种实现方法
- 实现局部动态的三种方法
- 【利用锁的三种方法来实现在多个线程时只运行一个线程】
- C#实现Winform间的数据交互的三种方法
- 三种方法实现不引入变量交换两个变量值
- 三种方法实现Spark计算WordCount
- js中设置元素class的三种方法小结
- 约瑟夫问题 三种实现方法
- 三种方法实现Linux系统调用
- PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
- 同一个表单 根据要求递交到不同页面的实现方法小结
- Canvas三种动态画圆实现方法说明
- ASP.NET(c#)实现重定向的三种方法的总结
- swift 元组 数组 字典 简单方法实现 小结
- java实现定时任务的三种方法