http://www.cnblogs.com/crazylights/archive/2011/10/07/2200821.html
仔細想了想,叫做教程似乎不太合適,應該算作一種討論。
windows 8 已經玩了一段日子,相信大家對Metro UI已經不陌生了。
Metro UI的介紹 我想很簡單就可以帶過了。
首先是布局方式,採用XAML布局,雖然外觀看起來簡單過了頭,這是從zune 和wp7 那裡繼承來的風格。
沒有視窗概念,取而代之的是Page。下一層次是控制項,容器控制項可以放子控制項。
根據容器控制項的特徵決定子控制項的定位方法。
有幾個常用容器控制項:grid,border,canvas
canvas是堅決從左上方按照 像素定位。
grid是劃分成幾個行欄區域,將子控制項布置在內,然後可以選擇停靠方向和位移,很近似 html的定位方法。
border子控制項自動填滿。
常用功能控制項
TextBlock 標籤控制項,顯示文本
TextBox 文本編輯框
Image 圖片控制項
Button 按鈕
控制項可以指定屬性和事件
wpf/silverlight 那一套,Metro UI 介紹完畢。
使用MetroUI的程式是用application.Run 啟動的,不用關心怎麼調用的,雖然你也可以重寫Main函數。
建立一個c# 的 black page 項目,都會自動建立好,然後給MainPage添加一個Loaded事件就可以開始寫初始化代碼了。
關於繪圖,windows8 還沒有提供XNA,看看現在winmd的廣泛使用,我們不用等XNA了,自己弄一個吧。
windows8 給出了Dx的樣本,不過是用c++編寫的,c++的執行效率高,開發效率讓人非常苦惱。所以我們要把繪圖介面整回到c#來。
windows8 給出的DX樣本是工作在coreapplication架構下的,xaml神馬的都不能用,那種方式UI、神馬神馬的,全部都得用DX繪製出來。
我並不喜歡這個方式,我很想用xaml做遊戲介面,所以我們要想點辦法,不放棄介面,還要用DX。
於是,我們做到了。
用c++ 做一個封裝,封裝成winmd形式,先來看一下樣本(svn地址圖裡找)
win8clgc = crazylights graphics core
圖形核心,基本繪圖方法。先弄個2D的,3D我沒打算裸奔DX,回頭看看有沒有代碼量不大的開源引擎,直接並一個進去。
如果你只是需要一個 win8 可用,c#可調用,高效能的繪圖功能,那隻虛熟悉下clgc的介面即可。
目前已封裝了D2D和DWrite的部分功能。
svn 地址
win8clgf = crazylights graphics framework
圖形架構,目前只實現了一個介面,把RenderTarget的內容 複製到 Image控制項中。
以後在這裡丟一些介面系統、2D情境、精靈系統神馬的。
使用時僅需三步
1.引用 win8clgc.winmd
2.初始化clgc,建議給MainPage添加一個Loaded事件做初始化
3.編寫邏輯,如果需要update,建議使用DispatcherTimer,因為只有在主線程上才能更新Image控制項,即使新開線程更新,幀數還是被主線程限制。
只要CopyImage 就會將繪製內容顯示到Image控制項中,copyImage的實現很簡單,你也可以不引用clgf,直接把copy功能包括在你的項目中,bytes在隱藏的部分代碼中由rendertarget返回。
目前的Render介面
可以看到提供了兩組DrawBitmap和DrawText介面,有興趣可以自己測試了。
測試程式
綠色背景區為即時繪製
http://www.cnblogs.com/crazylights/archive/2011/10/07/2200821.html
仔細想了想,叫做教程似乎不太合適,應該算作一種討論。
windows 8 已經玩了一段日子,相信大家對Metro UI已經不陌生了。
Metro UI的介紹 我想很簡單就可以帶過了。
首先是布局方式,採用XAML布局,雖然外觀看起來簡單過了頭,這是從zune 和wp7 那裡繼承來的風格。
沒有視窗概念,取而代之的是Page。下一層次是控制項,容器控制項可以放子控制項。
根據容器控制項的特徵決定子控制項的定位方法。
有幾個常用容器控制項:grid,border,canvas
canvas是堅決從左上方按照 像素定位。
grid是劃分成幾個行欄區域,將子控制項布置在內,然後可以選擇停靠方向和位移,很近似 html的定位方法。
border子控制項自動填滿。
常用功能控制項
TextBlock 標籤控制項,顯示文本
TextBox 文本編輯框
Image 圖片控制項
Button 按鈕
控制項可以指定屬性和事件
wpf/silverlight 那一套,Metro UI 介紹完畢。
使用MetroUI的程式是用application.Run 啟動的,不用關心怎麼調用的,雖然你也可以重寫Main函數。
建立一個c# 的 black page 項目,都會自動建立好,然後給MainPage添加一個Loaded事件就可以開始寫初始化代碼了。
關於繪圖,windows8 還沒有提供XNA,看看現在winmd的廣泛使用,我們不用等XNA了,自己弄一個吧。
windows8 給出了Dx的樣本,不過是用c++編寫的,c++的執行效率高,開發效率讓人非常苦惱。所以我們要把繪圖介面整回到c#來。
windows8 給出的DX樣本是工作在coreapplication架構下的,xaml神馬的都不能用,那種方式UI、神馬神馬的,全部都得用DX繪製出來。
我並不喜歡這個方式,我很想用xaml做遊戲介面,所以我們要想點辦法,不放棄介面,還要用DX。
於是,我們做到了。
用c++ 做一個封裝,封裝成winmd形式,先來看一下樣本(svn地址圖裡找)
win8clgc = crazylights graphics core
圖形核心,基本繪圖方法。先弄個2D的,3D我沒打算裸奔DX,回頭看看有沒有代碼量不大的開源引擎,直接並一個進去。
如果你只是需要一個 win8 可用,c#可調用,高效能的繪圖功能,那隻虛熟悉下clgc的介面即可。
目前已封裝了D2D和DWrite的部分功能。
svn 地址
win8clgf = crazylights graphics framework
圖形架構,目前只實現了一個介面,把RenderTarget的內容 複製到 Image控制項中。
以後在這裡丟一些介面系統、2D情境、精靈系統神馬的。
使用時僅需三步
1.引用 win8clgc.winmd
2.初始化clgc,建議給MainPage添加一個Loaded事件做初始化
3.編寫邏輯,如果需要update,建議使用DispatcherTimer,因為只有在主線程上才能更新Image控制項,即使新開線程更新,幀數還是被主線程限制。
只要CopyImage 就會將繪製內容顯示到Image控制項中,copyImage的實現很簡單,你也可以不引用clgf,直接把copy功能包括在你的項目中,bytes在隱藏的部分代碼中由rendertarget返回。
目前的Render介面
可以看到提供了兩組DrawBitmap和DrawText介面,有興趣可以自己測試了。
測試程式
綠色背景區為即時繪製