[转][小结][三种方法]实现WPF不规则窗体
實(shí)現(xiàn)WPF不規(guī)則窗體的三種常用的方法如下:
1.使用Blend等工具繪制一個(gè)不規(guī)則xaml,然后作為窗體的背景。這個(gè)可以參考xiaowei0705的這篇博文:WPF制作不規(guī)則的窗體?。
2.給window的Clip屬性賦Path值。這個(gè)可以參考DebugLZQ前面的博文:WPF Effect Clip以及Transform?。
3.使用透明背景的PNG圖像。本文將要講述。
本文將要講述的這種方法,可以說一點(diǎn)技術(shù)含量都沒有,基本不用動(dòng)手編寫代碼。前提是你得有合適的透明背景的PNG圖像。
我們假設(shè)你已經(jīng)完成了PNG圖像的制作(當(dāng)然為了演示的話,down一個(gè)也行),那么這個(gè)不規(guī)則窗體實(shí)現(xiàn)如下:
<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>
解釋下這個(gè)xaml需要注意的屬性設(shè)置:
allowstransparency="True"?- 允許透明
background="Transparent"?- 設(shè)置背景透明
windowstyle="None"?- 去掉邊框
opacitymask="White"?- 設(shè)置白色透明
為Gird訂閱的MouseLeftButtonDown路由事件,是為了實(shí)現(xiàn)窗體的拖動(dòng)。事件處理如下:
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{this.DragMove();
} 實(shí)現(xiàn)效果如下:
效果不清楚?再來兩張
題外話:越來越發(fā)現(xiàn)發(fā)到博客園首頁的博文質(zhì)量是越來越差了,很多文章根本沒有一點(diǎn)價(jià)值,純垃圾~
真心建議發(fā)到首頁的博文,希望博文的作者能夠花點(diǎn)時(shí)間,分享有價(jià)值的東西,不要嘩眾取寵~試想:你發(fā)到首頁的博文你自己以后都不愿意去看的,何況別人?也希望博客園團(tuán)隊(duì)加強(qiáng)監(jiān)管力度!
我們寫博文的目的是為了分享,分享本來就是一種積累,寫博文的過程可以看做是一種沉淀,所以這是一個(gè)雙贏的事。個(gè)人愚見,歡迎批評(píng)指正~
?“只要人人都獻(xiàn)出一點(diǎn)愛,世界將變成美好的人間...”
Update:
需要運(yùn)行時(shí)更新窗體樣式怎么辦?即更新圖片即可:
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
轉(zhuǎn)載于:https://www.cnblogs.com/weikai/archive/2013/06/15/3137154.html
總結(jié)
以上是生活随笔為你收集整理的[转][小结][三种方法]实现WPF不规则窗体的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单上手的游戏引擎
- 下一篇: 12,缓冲运动。匀速运动停止条件