国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種簡(jiǎn)單窗口半透明方法的研究與實(shí)現(xiàn)

2016-03-10 07:44馮偉桓
關(guān)鍵詞:控件

馮偉桓, 錢 歡

(1.成都理工大學(xué) 數(shù)學(xué)地質(zhì)四川省重點(diǎn)實(shí)驗(yàn)室, 四川 成都 610059;

2.中南大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院, 湖南 長(zhǎng)沙 410083)

?

一種簡(jiǎn)單窗口半透明方法的研究與實(shí)現(xiàn)

馮偉桓1, 錢歡2

(1.成都理工大學(xué) 數(shù)學(xué)地質(zhì)四川省重點(diǎn)實(shí)驗(yàn)室, 四川 成都610059;

2.中南大學(xué) 數(shù)學(xué)與統(tǒng)計(jì)學(xué)院, 湖南 長(zhǎng)沙410083)

摘要:目前窗口半透明的應(yīng)用越來(lái)越廣泛,越來(lái)越多的窗口呈現(xiàn)出風(fēng)格迥異的界面設(shè)計(jì),如此別具一格的設(shè)計(jì),提高了用戶的體驗(yàn).基于WPF實(shí)現(xiàn)了一種較為簡(jiǎn)單的窗口半透明方法,詳細(xì)介紹了實(shí)現(xiàn)窗口半透明的原理和流程,提出并實(shí)現(xiàn)了窗口半透明且控件不透明的方法.算法運(yùn)行結(jié)果表明,該方法效率較高、實(shí)現(xiàn)簡(jiǎn)單.

關(guān)鍵詞:窗口半透明;WPF;控件

0引言

早期的計(jì)算機(jī)操作系統(tǒng)中,窗口作為應(yīng)用程序和用戶溝通的界面,往往是不透明的,即一個(gè)窗口被其他窗口覆蓋的部分完全不可見(jiàn),這在一定程度上限制了用戶的視野和操作,并且一成不變的窗口雖然使得整個(gè)窗口系統(tǒng)風(fēng)格統(tǒng)一,但同時(shí)也使用戶更容易產(chǎn)生審美疲勞,降低了用戶的體驗(yàn).目前,主流的計(jì)算機(jī)操作系統(tǒng)都在積極引入窗口半透明機(jī)制,比如,蘋(píng)果公司推出的MAC OS X首次以備份緩沖和OpenGL硬件加速技術(shù)實(shí)現(xiàn)了在系統(tǒng)層次上的窗口半透明.此外,雖然Unix和類Unix操作系統(tǒng)的窗口還沒(méi)有實(shí)現(xiàn)半透明,但其開(kāi)發(fā)人員正在對(duì)它增加一些窗口半透明的擴(kuò)展,然而效率很低,并且速度很慢.而由微軟推出的Windows Vista和Windows 7系統(tǒng)可以通過(guò)開(kāi)啟Aero特效實(shí)現(xiàn)系統(tǒng)層次上的窗口邊框半透明,最新的Windows 8和Windows 10操作系統(tǒng),已經(jīng)引入了窗口半透明機(jī)制.可見(jiàn),半透明是窗口系統(tǒng)未來(lái)的發(fā)展趨勢(shì)之一.本研究主要討論一種較為簡(jiǎn)單且高效的實(shí)現(xiàn)窗口半透明方法——基于WPF[1-5]的窗口半透明實(shí)現(xiàn).

1窗口半透明實(shí)現(xiàn)方案

1.1基于備份緩沖的窗口半透明實(shí)現(xiàn)

備份緩沖是現(xiàn)有的窗口半透明方法之一,其主要思路是為每個(gè)窗口增加一個(gè)α屬性,用于指示每個(gè)窗口的不透明度,在窗口更新和顯示前,獲得窗口即將遮擋部分的內(nèi)容,并保存在內(nèi)存中備份,然后在窗口顯示的時(shí)候,先顯示在內(nèi)存中保存好的內(nèi)容備份,再將待顯示的窗口內(nèi)容乘以α屬性后顯示在窗口上,就可以實(shí)現(xiàn)窗口半透明效果.

備份緩沖這種方法雖然可以較好地實(shí)現(xiàn)窗口半透明,但這種方法需要在窗口更新和顯示前實(shí)時(shí)更新備份窗口即將遮擋的內(nèi)容,因此會(huì)消耗大量的資源,并且效率比較低.雖然備份緩沖可以結(jié)合OpenGL硬件加速技術(shù)來(lái)提高效率,降低消耗的資源,但這樣會(huì)使得算法復(fù)雜度大大增加.

1.2基于WPF的窗口半透明實(shí)現(xiàn)

1.2.1WPF簡(jiǎn)介.

WPF(Windows Presentation Foundation)是微軟推出全新的用戶界面框架,由.NET Framework 3.0引入,旨在為應(yīng)用程序的編寫(xiě)提供統(tǒng)一的編程語(yǔ)言、模型和框架,用于實(shí)現(xiàn)能帶給用戶震撼視覺(jué)體驗(yàn)的Windows客戶端應(yīng)用程序.

WPF的界面設(shè)計(jì)用的是基于XML語(yǔ)法的XAML語(yǔ)言,而應(yīng)用程序后臺(tái)邏輯的開(kāi)發(fā)大多用的都是C#.界面設(shè)計(jì)人員可以通過(guò)微軟提供的Expression Blend工具或直接手寫(xiě)XAML文件的方式開(kāi)發(fā)和設(shè)計(jì)應(yīng)用程序的界面,而開(kāi)發(fā)人員則可以更加關(guān)心應(yīng)用程序的后臺(tái)邏輯,真正做到了區(qū)分界面設(shè)計(jì)人員與開(kāi)發(fā)人員的工作.

1.2.2實(shí)現(xiàn)原理.

WPF中所有的用戶界面元素,都被稱為控件.控件從用途上可以分為4種:內(nèi)容控件(Content Controls)、條目控件(Items Controls)、文本控件(Text Controls)和范圍控件(Range Controls).

窗口在WPF中以Window控件的形式存在.根據(jù)窗口的特性,可以確定Window控件是屬于內(nèi)容控件,即Window控件繼承自ContentControl并且具有重要的Content屬性.ControlControl是繼承自Control類的,因此Window控件具有繼承而來(lái)的Opacity屬性.

Opacity屬性是在Control類中定義的,用于控制控件的不透明度,可以在0到1之間取值,0表示完全透明,1表示完全不透明.Window控件具有Opacity屬性,可以利用該屬性實(shí)現(xiàn)窗口半透明.

1.2.3實(shí)現(xiàn)流程.

通過(guò)Opactiy屬性可以使控件呈現(xiàn)出半透明.但窗口Window控件作為一種特殊的控件,僅僅設(shè)置Opacity屬性,是遠(yuǎn)遠(yuǎn)不夠的,圖1展示了僅僅將Opacity屬性設(shè)置為0的情況.

圖1將Window控件Opacity屬性設(shè)置為0時(shí)的窗口

如圖1所示,僅僅將Window控件的Opacity屬性設(shè)置為0時(shí),整個(gè)窗口除邊框以外都呈現(xiàn)為黑色.這是因?yàn)榇翱跇邮侥J(rèn)包含了邊框,而且默認(rèn)的窗口是不支持透明的.

為了去除窗口邊框,可以設(shè)置Window控件的WindowStyle屬性.WindowStyle屬性是枚舉類型值,可以取的值有None、SingleBorderWindow、ThreeDBorderWindow和ToolWindow.其中,None表示窗口僅工作區(qū)可見(jiàn),邊框不會(huì)顯示,正符合要求,所以為實(shí)現(xiàn)窗口半透明,還需要將Window控件的WindowStyle屬性設(shè)置為None.圖2展示了去除默認(rèn)的窗口邊框后的情況.

圖2 將Window控件WindowStyle屬性設(shè)置為None時(shí)的窗口

如圖2所示,窗口雖然去掉了邊框,默認(rèn)的標(biāo)題欄也不再顯示,但并沒(méi)有像預(yù)期一樣,呈現(xiàn)出窗口半透明.這是因?yàn)榇翱谀J(rèn)不支持半透明,只能通過(guò)修改Window控件的AllowsTransparency屬性修改窗口默認(rèn)行為.設(shè)置Opacity屬性為0.5,使窗口實(shí)現(xiàn)半透明;設(shè)置WindowStyle屬性為None,去除窗口默認(rèn)邊框;設(shè)置AllowsTransparency屬性為True,使窗口支持半透明.最后實(shí)現(xiàn)的效果如圖3所示.

圖3最簡(jiǎn)單的半透明窗口

在圖3中,窗口呈現(xiàn)出白色半透明,并且窗口中的控件也呈半透明顯示,這是因?yàn)榇翱谀J(rèn)的背景色是白色,窗口中的控件作為窗口的子控件會(huì)延續(xù)父控件的透明度.因此子控件的Opacity屬性雖然依舊是默認(rèn)值1,表示控件不透明,但卻因?yàn)楦缚丶耐该鞫?,?huì)作用到父控件的內(nèi)容,即其子控件上,使子控件最終顯示出與父控件相同的透明度.

因此,在窗口設(shè)置為半透明時(shí),子控件會(huì)延續(xù)父控件的透明度,最終子控件也表現(xiàn)出半透明.這樣的效果,稱為全局透明,有時(shí)候也會(huì)需要這樣的效果,例如,在Office Word中對(duì)選中字體提供快捷操作的窗口,即使用了全局透明的效果,具體如圖4所示.但在大部分情況下使用全局透明效果,會(huì)使子控件看起來(lái)模糊不清.因此全局透明效果的應(yīng)用十分有限.

圖4Office Word全局透明效果應(yīng)用實(shí)例

1.2.4一種較為完善的方法.

本研究提出一種較為完善的方法,實(shí)現(xiàn)窗口半透明,且控件不透明的界面效果.其實(shí)現(xiàn)流程如圖5所示,效果如圖6所示.

圖5一種較為完善方法的實(shí)現(xiàn)流程

圖6窗口半透明,控件不透明效果

按照上述實(shí)現(xiàn)流程,實(shí)際由一個(gè)和窗口一樣大小的Border修飾控件來(lái)控制窗口的不透明度,從而實(shí)現(xiàn)窗口半透明,且控件不透明效果.該方法的關(guān)鍵代碼如下:

當(dāng)風(fēng)送系統(tǒng)的風(fēng)機(jī)轉(zhuǎn)速在2000轉(zhuǎn)/分,籽粒水分含量大于20%時(shí),風(fēng)道入口容易堵塞,需打開(kāi)堵蓋疏通,工作量較大,轉(zhuǎn)速加大則出現(xiàn)嗑籽和撒籽現(xiàn)象。建議在收獲前測(cè)定葵盤(pán)、籽粒含水率,選擇籽粒水分含水率小于20%的地塊進(jìn)行收獲。

〈Window x:Class=″TestWPF.MainWindow″

……

Background=″Transparent″

WindowStyle=″None″

AllowsTransparency=″True″〉

〈Grid〉

〈Border BorderBrush=″Black″

Background=″White″

CornerRadius=″5″

BorderThickness=″1″

Opacity=″0.8″/〉

〈Grid〉……〈Grid/〉

〈/Grid〉

〈/Window〉

1.3方法討論

本研究提出方法的優(yōu)點(diǎn)是,代碼實(shí)現(xiàn)的時(shí)間復(fù)雜度和算法復(fù)雜度都比較低,并且顯示效果較好.同時(shí),基于WPF使該方法獲得較好的可擴(kuò)展性,可較為簡(jiǎn)單且高效地實(shí)現(xiàn)了窗口半透明效果.但該方法的缺點(diǎn)在于需要去除窗口自帶的邊框,而對(duì)于去除之后的窗口,將無(wú)法使用由系統(tǒng)層次提供的移動(dòng)窗口、最小化窗口、最大化窗口、關(guān)閉窗口和動(dòng)態(tài)改變窗口大小等功能.因此,要想實(shí)現(xiàn)功能完備的半透明窗口,還需要進(jìn)一步手動(dòng)編寫(xiě)后臺(tái)邏輯代碼實(shí)現(xiàn)這些由系統(tǒng)層次提供的功能.

2結(jié)論

窗口半透明相當(dāng)于增加了電腦屏幕的空間,使用戶能夠看到更多的內(nèi)容.本研究實(shí)現(xiàn)了一種簡(jiǎn)單、高效,且基于WPF來(lái)實(shí)現(xiàn)窗口系統(tǒng)半透明的方法.由于WPF的擴(kuò)展性,使用該種方法創(chuàng)建的半透明窗口,具有很強(qiáng)的多樣性.在一定條件下,稍微調(diào)整一個(gè)或者幾個(gè)窗口控件的屬性值,就可以得到花樣繁多、風(fēng)格迥異的窗口.

參考文獻(xiàn):

[1]MacDonald M.ProWPFinC# 2012:Windowspresentationfoundationin.NET4.5[M].New York,USA:Apress Media,2012.

[2]Sells C,Griffitbs I.ProgrammingWPF[M].California,USA:O'Reilly Media,Inc,2007.

[3]Eric White.GDI+程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002.

[4]Adam Nathan.Windowspresentationfoundationunleashed[M].Carmel,Indiana:Sams Publishing,2006.

[5]琚彬.基于WPF平臺(tái)的自定義控件開(kāi)發(fā)[D].西安:西安電子科技大學(xué),2008.

Research and Implementation of Simple Method for Semi-Transparent Window

FENGWeihuan1,QIANHuan2

(1.Geomathematics Key Laboratory of Sichuan Province, Chengdu University of Technology, Chengdu 610059, China;2.Mathematics and Statistics Academy, Central South University, Changsha 410083, China)

Abstract:Currently,the application of semi-transparent window has become more widely with more and more windows showing different styles of interface design.All those different designs draw more attention,and also improve the user experience.This paper does the research on semi-transparent windows and comes up with a simpler way to realize the translucency of the window.The paper also discusses the details of principles and processes to realize its translucency and puts forward a method to realize the translucency of windows and the opaque of controls.The final operating results show that this method is more efficient,and easy to be realized.

Key words:semi-transparent window;WPF;control

中圖分類號(hào):TP316

文獻(xiàn)標(biāo)志碼:A

作者簡(jiǎn)介:馮偉桓(1991 — ), 男, 碩士研究生, 從事計(jì)算機(jī)3S軟件技術(shù)研究.

收稿日期:2015-12-16.

文章編號(hào):1004-5422(2016)01-0067-04

猜你喜歡
控件
基于C++Builder 的電子郵件接收程序設(shè)計(jì)*
使用“填表單”微信小程序 統(tǒng)計(jì)信息很方便
基于.net的用戶定義驗(yàn)證控件的應(yīng)用分析
關(guān)于.net控件數(shù)組的探討
Excel深度考核自動(dòng)閱卷系統(tǒng)中控件的評(píng)判方法
用Delphi編程實(shí)現(xiàn)H.264視頻文件的播放
PowerBuilder中利用OLE技術(shù)實(shí)現(xiàn)H.264視頻文件的播放
用VB擴(kuò)展Authorware數(shù)據(jù)庫(kù)應(yīng)用能力的方法
基于VxWorks的人機(jī)界面圖形開(kāi)發(fā)系統(tǒng)設(shè)計(jì)
基于多級(jí)鏈表實(shí)現(xiàn)MiniGUI屬性頁(yè)控件設(shè)計(jì)