[转][小结][三种方法]实现WPF不规则窗体
實現WPF不規則窗體的三種常用的方法如下:
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);
} ?
原文地址:http://www.cnblogs.com/DebugLZQ/archive/2013/05/16/3081802.html
轉載于:https://www.cnblogs.com/weikai/archive/2013/06/15/3137154.html
總結
以上是生活随笔為你收集整理的[转][小结][三种方法]实现WPF不规则窗体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单上手的游戏引擎
- 下一篇: 12,缓冲运动。匀速运动停止条件