国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

為.NET程序批上WPF的絢麗外衣

2019-11-17 04:46:46
字體:
來源:轉載
供稿:網友
引言:你也許聽說過Avalon(現在被稱為Windows PResentation Foundation,或WPF),也許看過相關的屏幕截圖或demo,但是現在你可以親手嘗試了。讓我們開始創建下一代Windows應用程序吧。

  微軟公司早在2003年洛杉磯的PDC上就公布了Avalon,他們將其視為下一代用戶界面技術,并且得到了開發者和用戶的一致贊同。

  在2005年的PDC上,微軟公司展示了比2003年更加完整的Avalon版本,并給它取了一個官方新名稱:Windows Presentation Foundation(WPF)。在此之前,它已經完成了從演示軟件到開始階段alpha版本的API的轉變。到了幾個月之后的今天,它又成長成為更加先進的beta版本--你可以使用它來開發你的下一代用戶界面程序了。

  那么,WPF是什么,為什么它那么重要呢?

  首先,它清楚而又有效的將用戶界面和程序實現分開。它使得設計可視化的用戶界面的設計者和編寫內部核心代碼的開發人員可以并行工作。這是非常重要的:

  ·將兩者分開,軟件開發公司可以使得設計者們集中精力將設計工作做得更好,同時讓開發者支持他們。

  ·隨著軟件外包和訂購的逐漸風行,WPF使得一些商業的設計者們能夠更好的從事界面設計工作,并集成一些簡單的功能,而購買的核心代碼能夠獨立的完成內部的一些要害邏輯而不干擾設計過程。

  ·它更好的支持應用軟件的國際化。不同的獨立的界面可以使用不同的本地化方案,而內部的代碼是通用的。

  ·它支持軟件的"空標簽":可以為不同的用戶采用定制的界面而保持核心的邏輯不變。開發者們創建程序邏輯,然后為不同的用戶使用不同的界面并貼上他們的商標等。

  WPF使用一種基于xml的語言來定義用戶界面從而完成上述的工作。這種語言被稱為XAML,XML應用程序標記語言。

  其次,WPF使用一種基于向量而不是基于光柵的繪制引擎,這和曹其的Windows的繪制引擎是截然不同的。光柵繪制引擎通過在屏幕上繪制象素點來繪制表面。象素只是點;這樣的話,假如屏幕分辨率(DPI,每英寸點)增加了,它的效果就會變差。隨著現在屏幕都采用超高DPI的分辨率,字體必須使用成百上千個DPI來達到一定的瀏覽效果。比如微軟Word里缺省的英文字體12號的Times New Roman,在現在的普通分辨率情況下效果還可以但是到了超高分辨率的顯示器上效果就不行了。治理這些基于光柵的圖像的點將會消耗大量的處理能力,同時也是很浪費的。而采用基于向量的方式來替代象素,在一個可擴展的坐標系里繪制字體和其他線型,使得它們可以獨立于DPI。想想Windows Metafile(WMF)和位圖文件(BMP)之間的差距你就明白了。同時,向量圖也使得一些變換如3D,旋轉和動畫變得更加方便和易于操作。

  好,理論就講到這里,下面開始我們的第一個基于WPF的應用程序之旅吧。

  開始工作

  首先,在你開始前,我強烈建議你卸載所有和WinFX,Windows SDK以及其他一些開發的測試版本工具有關的所有東西。事實上,我甚至認為,刪除掉VS2005和.NET framework 2也使很不錯的主意。你可以嘗試著使用預安裝它們的機器,但是我覺得最好還是用一臺比較"干凈的"機器。你可以嘗試著使用微軟的Virtual PC或者Vmware Workstation來運行一個虛擬機鏡像以達到我所說的要求。其次,在你開始以前,你需要下載一個清理軟件CCleaner.com。這個軟件會清理你的注冊表里一些壞的,老的或不用的鍵值將它們清理掉。

  下面你需要下載并且安裝一些軟件:

  1. 首先你需要WinFX runtime components。

  2. 安裝之后重啟--下面安裝VS2005假如你沒有安裝的話。假如你沒有正式版本,下載一個free EXPress Edition。

  3. 然后下載Windows SDK--1G大小左右。注重你最好是下載IMG文件并刻錄到DVD上或者使用虛擬光驅來安裝它。不幸的是,我這樣做每次都不成功。所有,我推薦你下載IMG文件,并且下載相關的Setup文件(相同頁面下載)。將它們放到你硬盤的同一目錄下。運行Setup程序進行安裝。

  4. 最后你需要下載Visual Studio development tools(Orcas)來進行WinFX開發。它包含了VS里的"Cider"設計器來編輯XAML。

  5. 最后你必須下載Expression Designer for XAML。

  作為程序員你可以使用Cider工具來在VS.NET里創建基本的XAML用戶界面,這樣的方式你會感到很熟悉,和在VS中進行一般的Windows 窗體設計差不多。但是,假如要是用一些XAML提供的高級特性,我建議你還是研究一下Expression Designer for XAML。

  第一個WPF程序

  假如所有的工具都安裝正確,你就可以開發你的第一個WPF程序了。打開VS2005,選擇文件->新建工程。你將會看到工程對話框,如圖1所示。

為.NET程序批上WPF的絢麗外衣(圖一)
點擊查看大圖

圖1

  在圖1中,你可以看到一套新的工程類型,名為Windows(WinFX),包括WinFX Windows程序,服務庫,瀏覽器程序和控件庫。它們分別用來創建XAML客戶端程序,Indigo服務,XAML瀏覽器(Web窗體)程序,和控件庫。
  這篇文章里,我主要講解創建一個WinFX windows應用程序的流程,所以我們選擇和其對應的工程模板

  當你第一次創建這個程序的時候,你將會看到和標準的VS設計環境類似的界面,但是事實上它是一個VS的新的XAML設計器,代號"Cider"。如圖2所示。

為.NET程序批上WPF的絢麗外衣(圖二)
圖2

  假如你仔細看圖2,你會發現在設計面板的下部有一個新tab,名為"Xaml"。點擊它,你會看到當前設計的XAML,這個XAML包含了一個簡單的對話框,顯示了一個lable,一個textbox,一個按鈕:

<Window x:Class="AvalonHelloWorld.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/
presentation" xmlns:x=
"http://schemas.microsoft.com/winfx/2006/xaml"
Title="AvalonHelloWorld" Height="300" Width="300"
Opacity="0.5">
<Grid>
<Button Width="NaN" Height="37"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch" Grid.Column="0"
Grid.ColumnSpan="1" Grid.Row="0"
Grid.RowSpan="1"
Margin="114,0,8,8"
Name="button1">Button</Button>
<Label Width="NaN" Height="30.276666666666667"
VerticalAlignment="Top"
HorizontalAlignment="Stretch"
Grid.Column="0" Grid.ColumnSpan="1"
Grid.Row="0"
Grid.RowSpan="1"
Margin="16,25.7233333333333,89.37,0"
Name="label1" FontSize="20">
Enter Text Here:</Label>
<TextBox Width="NaN" Height="42.276666666666671"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
Grid.Column="0" Grid.ColumnSpan="1"
Grid.Row="0"
Grid.RowSpan="1" Margin="16,0,34.37,157"
Name="textBox1"></TextBox>
</Grid>
</Window>
  當你改變Cider可視化編輯器里的對話框的布局的時候,工具會自動更新XAML的內容。

  對控件的基于設計者的事件添加機制還沒有被Cider所支持,不過假如手工對XML進行一些修改就可以很輕易的增加一些事件。比如,你可以手工為"Click"屬性增加一個點擊事件處理:

<Button Click="ButtonClick" Width="NaN" Height="37"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
Grid.Column="0" Grid.ColumnSpan="1" Grid.Row="0"
Grid.RowSpan="1" Margin="114,0,8,8"
Name="button1">Button</Button>
  你可以看到,這里做的就是為按鈕增加了一個新的"Click"屬性,并且給出了點擊按鍵事件句柄的名稱。假如你選擇了"Source"那個tab,你可以為這個事件創建處理句柄。

  Avalon使用一種被稱為"Routed Events"的機制來綁定XAML和后端代碼,如同其名--事件在運行時在獨立的XAML UI和代碼之間相互傳遞。

  這樣的話,你需要聲明事件句柄來使用RoutedEventArgs參數:

void ButtonClick(object sender, RoutedEventArgs e)
{
System.Windows.MessageBox.Show("Hello World to:" +
textBox1.Text);
}
  假如你此時運行程序,你將看到WPF基于向量的引擎已經開始工作了,如圖3所示。

為.NET程序批上WPF的絢麗外衣(圖三)
圖3

  這樣你就完成了你的第一次Avalon的學習之旅,也許它沒有想象中的激動人心,但是究竟你已經開始把握這一先進技術了。
更多的請看:http://www.QQread.com/windows/2003/index.Html使用Expression來設計XAML

  Microsoft Expression是一個比基本的Cider工具更加強大的XAML設計工具,它包含在VS.NET的WinFX工具集中。這一節里,你將看到如何使用它來設計一個XAML界面并且和上文一樣將代碼合成到VS.NET中去。注重這里也同樣展示給你,設計者和開發人員如何獨立的秉性工作,來使用不同的工具發揮各自所長。

  打開Microsoft Expression,創建一個新的工程,選擇Windows Executable Project。如圖4所示。

為.NET程序批上WPF的絢麗外衣(圖四)
圖4

  這里將會創建一個包含XAML文件和后端C#文件的VS兼容工程。你可以在Expression中編輯代碼,不過編輯器并沒有包含開發人員所熟悉的集成調試和其他功能。不過在不久的將來,Expression將會答應設計者和程序員共享一個治理工程的通用文件格式。

  你可以使用Expression交互式設計器中的工具來設計一個更加花哨的界面。這里我設計了一個和早先給出的例子一樣的界面--Hello World程序。不過,我使用了一些Expression的旋轉和平行四邊形的效果來使得它顯得更加花哨。如圖5。

為.NET程序批上WPF的絢麗外衣(圖五)
圖5

  Expression保存了一個包含所有XAML和.CS文件的.csproj文件,所以創建了界面之后,你就可以在VS2005中打開和使用相同的工程了。

  當你在VS2005中打開工程,你將會看到工程設置和你開始在創建一個新的WinFX Windows程序的時候差不多。一個小小的不同點在于 Expression將你的XAML組織為"Scenes"而不是"Windows",所以內部XAML是有點不同的,當你運行它的時候XAML在一個scene容器內進行繪制,如圖6所示。

為.NET程序批上WPF的絢麗外衣(圖六)
圖6

  你現在可以像上面一樣給按鈕控制增加代碼;不過你必須和XAML進行消息傳遞,集成化還沒有給你做好它。同樣,你也許會得到一個Expression增加的<Trigger>標記引發的錯誤。刪除掉它,然后你就可以運行你的程序了。

  圖六顯示了一個運行中的程序(在Scene查看器中),當用戶點擊按鈕時會彈出Hello,world消息。

  結束語

  在這篇文章里我們主要介紹了Windows Presentation Foundation,以前它被叫作Avalon,并且研究了基于向量的繪制引擎給你的Windows界面設計帶來的好處。你使用不同的方式創建了一個簡單的程序,開始是使用了"Cider",它的XAML編輯器將來會合并進入VS2005。然后我們使用了Microsoft Expression交互式設計器來完成相同的工作。因為在Expression和VS2005里的文件集是兼容的,你可以看出界面設計師可以使用Expression來設計程序原型然后再將其給開發人員進行核心代碼開發,為應用程序添加程序邏輯等。

  在今后的文章里,我們將介紹使用VS2005和Cider來創建2D的Windows窗體程序,并且會探索一些實現3D效果的API以及Windows Vista里的新的Aero函數功能。這將會是一次奇妙的程序之旅。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尉犁县| 徐水县| 琼海市| 嘉黎县| 高州市| 临湘市| 平和县| 卓尼县| 郁南县| 和林格尔县| 吉木乃县| 保定市| 来凤县| 绥阳县| 柳林县| 潜山县| 莱芜市| 上蔡县| 钟祥市| 临城县| 玛多县| 宜章县| 镶黄旗| 恩施市| 松潘县| 虎林市| 那曲县| 台东县| 定日县| 贵港市| 文登市| 双峰县| 安岳县| 施秉县| 宜章县| 中阳县| 肥东县| 高台县| 巴塘县| 焉耆| 铁力市|