一次解決您對 .NET Framework、WPF、WPF/E、Silverlight、XAML、XBAP、Expression Studio( Web / Design / Blend / Media)… 所有的疑問


台灣市面上的爛書,90% 以上都是抄自使用手冊 ( 英翻中 ?! ),要不就是每一本書的前 2 / 3 都差不多 凸 =..= 凸。於是乎【火星人】大神俺就佛心大發:

把比上述更多的東東,全都建在 Blogger 上 !  ★ 放心,內文都是中英文對照 ★ ( 這些東東實在是太新了,俺寫的也難免會有錯誤,所以會不斷修正之 )


Ch 01-03 工作空間的分區 Areas of the workspace(2)

2007‧0617
 
   互動面板 Interactive Panel
 
   專案面板 Project Panel
 
   性質面板 Properties Panel ( Full & Mini Modes )
 
   資源面板 Resources Panel
 
   結果面板 Results Panel
 
   好用工具庫 Asset Library
 
 
 

 
 
 
 
互動面板 Interactive Panel
 
 
( 1 / 4 )
首先來看看 WPF / *.EXE的專案檔
 

 
 
一開啟後,下方 Interaction 面板中的 Triggers 裡就有 + Event
 

 
 
一按 + Event 後,就會出現 Window.Loaded 與其下方的一堆東東
 

 
 
再按 Loaded,又會出現一狗票東東

 
 
 
不過上述都不重要,因為目前只先討論 Silverlight,而不是 WPF / *.EXE
 
WPF / *.EXE 支援的功能當然又多又強悍,因為可以開發出 Windows Vista 的桌面程式
而 Silverlight 目前主要只支援 XAML 與 JavaScript,故功能自然受限
 
 
來看看 Silverlight 的專案檔:
1. 開啟 Silverlight 的專案檔
2. Triggers 處的功能都變灰色,不能用了 ( 啊就因為不是 WPF / *.EXE 咩 )
3. 跟之前的 WPF / *.EXE 相較:
  ‧Window 變成了 [Canvas]
  ‧LayoutRoot 不見蛋了
 

 
Interactive 面板中有兩大部份:TriggersObjects and Timeline ( 物件與時間軸 )
既然在 Silverlight 的專案裡 Triggers 會無效,那麼就在 ▼Triggers 上按一下,Triggers 就會縮小到左側 ( 再按一次就會復原 )
多出來的空間,就利於等一下時間軸的擺置
 
 
 
( 2 / 4 )
 
1. 首先拉一個 Canvas,以利於觀察 ▼ Objects and Timeline 中的層級關係
 
2. 在 Canvas 中畫出 3 個矩形,如此,在 ▼ Objects and Timeline 中就可以看到:
 
  ▼ [Canvas] ← 頂畫布 ( 工作區 )
   ▼ [Canvas] ← 步驟1的畫布
     [Rectangle] ← 矩型
     [Rectangle] ← 矩型
     [Rectangle] ← 矩型
 
3. 同步驟1、2,再拉出一個畫布,置入 3 個橢圓 ( Ellipse )
  如此層級的關係就很清楚了
 
4. 有了層級後,再開啟 Timeline ( 時間軸 ),以利比對 層級間的物件時間軸 的關係
 
5. 按了步驟4的 號後,會開啟時間軸的設定
 

 
 
開啟了 Timeline 之後,請先點選一個物件 ( 如左上方的粉紅色矩形 ),然後開始作業:
先點選到物件,然後移動時間軸的 黃橘色垂直線 ( 時間軸軌線 ) 到適當的時間位置
 

 
 
接著再移動物件 ( 即:先移動時間軸軌線 + 再移動物件 = 動畫的最基礎設定 )
 

 
 
再移動時間軸軌線
 

 
 
再移動物件 ( 第二段的動畫 )
 

 
 
又再移動時間軸軌線
 

 
 
最後再移動物件 ( 第三段動畫,形成一個封閉曲線的路徑 )
 

 
 
看動畫效果:
1. 回到第一格
2. 播放動畫
 

 
   上面只移動矩形,若是移動畫布,畫布裡的所有物件也會跟著移動
   ( 畫布縮放,裡面的物件一樣也會跟著縮放 )
 
 
 
( 3 / 4 )
 
如果不考慮 ActionScript,那麼 Flash 幾乎就只有 動畫遮罩 ( Mask )Alpha 透明度 等基本功能
 
‧看完上述最簡單的動畫後,再來看看其它的動畫效果:
 
 。轉動、Alpha 透明度的動畫
 
  先畫好一個平躺的橢圓形
 
  
 
 
  1. 移動時間軸軌線
  2. 再移動物件到定點,轉動之、縮小之
  3. 調整 Alpha 透明度 ( ← 與 Flash 一模一樣 )
  4. 也可以調整 Properties 面板 > Appearance > Opacity ( ← 與 Photoshop 的 Layer 很類似 ),來達到有透明度的效果
 
  
 
 
 。沿著路徑移動的動畫(Motion Path)
 
  很不幸地,只有 WPF / *.EXE 才支援此功能
  Silverlight 無法在 Expression Blend 中,直接按一按就搞出此效果
  ( 當然啦,在 XAML 的標籤頁面中,靠 XAML、Javascript 也可以做得到,但不是直接在面板上按一按就搞出來 )
 
  所以也只能 frame by frame 一格一格按出來:
 
  
 
 
 
圖檔的透明度
 
 在看透明度之前,先來看看圖檔的置入效果
 
 首先,在 Photoshop 載入一張已背景透明的 PNG 檔
 當 顯示大小 為 80% 時,可以看到連 Photoshop 都無法讓圖緣無鋸齒
 ( 不過若是把 圖檔縮小 為原始尺寸的 80% 時,就不會有圖緣鋸齒了 )
 
 
 
 
 Flash 在這方面非常弱:一縮小尺寸後,就到處是鋸齒
 
 
 
 
 來看看 Expression Blend ( 含 Silverlight ):
 
 載入背景透明的圖檔 ( 這類圖檔最難處理 ) 後,在 Expression Blend 中圖緣很漂亮
 按 Ctrl +/- ( 即令顯示放到很大 ),圖緣依舊平順 → 所以小圖也可以當大圖用 !!
 
 
 
 
 縮小尺寸為 80% 後,圖緣還是平順 !!
 
 
 
 Expression Blend ( Silverlight ) 不只是 FlashKiller 這麼簡單的目標,連圖檔的置入與縮放,都優於Photoshop
 Flash 已經推到第 9 版了,連圖緣都處理不好
 Expression Blend、Expression Design 只是第 1 版,Silverlight 只是 1.0 β 版 ( 1.1 α 版 ),就注意到如此細節的問題
 這些都是筆者看好 Expression Blend 與 Silverlight 的原因之一
 
 
 再來看看圖檔的透明度
 
 向量圖要調透明度有兩種方法:Alpha 與 Opacity
 圖檔要調透明度 一樣可以用 Alpha 與 Opacity,夠酷吧 !!!!!
 
 
 
 
 
遮罩
 
  Expression Blend ( for Silverlight ) 設定遮罩的方法有很多,先舉兩例
 
 。漸層遮罩:調整 Alpha 與漸層,就可以有遮罩的效果
 
  
 
 
  。物件遮罩
  1. 按 Shift 鍵,選取遮罩與被遮罩的物件
  2. 下拉選單 > Object > Path > Make Clipping Path
  3. 遮罩完成
 
  
 
 
雖然 Expression Blend(Silverlight)的功能遠不及 Expression Blend(WPF / *.EXE)來得多
 
但是卻遠比 Flash 方便很多、也遠比 Flash 有彈性許多
 
 
 
( 4 / 4 )
 
如同 Flash 一樣,時間軸是很重要的功能,故此區有一大堆的功能
不過也不急著現在就搞清楚,待討論到範例時再適時細究,才比較好懂
 

 ↑ 在編製 Silverlight 時,Triggers 可以縮小到左側
 
 
 

 
 
 
 
專案面板 Project Panel
 
 
如果是編製 WPF / *.EXE,那麼專案面板就會複雜一些
但是編製 Silverlight,專案面板就很簡單了
 
 
一開啟 Silverlight 的專案,就會產生:
 
  
 
 
.csproj = C# ( C Sharp ) Project 檔 = C# 的專案檔
先不管它,不過這也預告了未來 Silverlight 一定會支援 C# 與 VB 到一定的程度 !!
 
事實上在編製 WPF / *.EXE 時,就可以與 C# 協同作業
而且在 Visual Studio 2005 後繼版本 Orcas ( beta ) 中,更可以直接就編製出 Silverlight 的格式
 
 
Default.html:( 也就是一般的首頁檔, index.htm )
‧載入了 3 個 JavaScript
‧定義長寬
‧Silverlight 在 HTML > body 中的語法
 

 
 
Default.html.js:( 這個 JavaScript 是 Default.html 的主要 Script )
‧主要是用來產生 Silverlight
‧Silverlight 的來源則是 Scene.xaml
 

 
 
Scene.xaml:也就是 Expression Blend 的 XAML 標籤頁面模式
 
Scene.xaml.js:這個 JavaScript 是 Scene.xaml 的主要 Script
 
Silverlight.js:有了 HTML 檔與其 Script,有了 XAML 檔與其 Script
        還要有 Script 來連繫 Browser 的 Plug-In,就是這個 JavaScript
 
 
 
如果按 Ctrl + I 載入圖檔,也會出現在專案檔 ( Project Panel > Files ) 中
 

 
 
檢查一下儲存的檔案夾,圖檔已被 Copy 進來了
也就是說,若是要上傳到網路去,這些檔案全部都得上傳:
 

 
 
    當然也可以只載入 Link:( 檔案就不會被 Copy 到儲存的檔案夾 )
 
    
 
 
    Link 的東東,在左下角會有個箭頭
 
    
 
 
 

 
 
 
 
性質面板 Properties Panel ( Full & Mini Modes )
 
 
1. 點選物件
2. 性質面板就會因為點選到不同類別 ( 如向量圖、文字、點陣圖、… ) 的物件而跟著不同
3. 還有進階的功能
 

 
Expression Blend 右側面板 ( 特別是 性質面板 ) 是很先進的 UI:
‧有點像 CorelDRAW 一樣地省空間,又會適時地變換
‧又有點像 3D Studio MAX 的側邊功能
‧操作起來很像是 Photoshop 的面板
‧還有類似 Dreamweaver / Frontpage ( Expression Web or SharePoint Designer ) 的 設計 / 語法 之標籤頁面可以切換
 
不像 Flash or Dreamweaver 的面板,太多又太佔空間了
想想,自從 Flash MX 起,您工作區的面積只剩下多少 ....
 
 
F4 or Tab 鍵,就可以把面板與時間軸縮小
 
                
 
                                          
 
無巧不成書地,Photoshop CS3 與 Expression Blend 都可以把面板縮到最小
這代表著 UI 設計工作區面積的大小 越來越受到重視
 
而 WPF 讓 UI 設計可以有著比以前更大的彈性:故以後軟體的外觀,肯定會更有變化
 
Adobe Illustrator 在 7 版之前,堅持自己的介面
後來 Adobe 終於把 Illustrator 的介面改成很像 Photoshop,就開始大賣 !!
 
基於上述,筆者對於 Expression Blend 的介面是大大地推崇
 
不過 Expression Blend 的介面還是有以下的缺點:
第一、下拉選單黑白對比太強烈了
第二、性質面板中的上下順序無法自行更改
第三、右鍵功能過少
第四、對 Silverlight 的支援還可以再多、更多、多很多 ....,如下圖:( Properties Panel > Events )
 
                       
 
動不動就只支援 WPF / *.EXE 而不支援 Silverlight,實在很叫人失望 ....
 
 
 

 
 
 
 
資源面板 Resources Pannel
 
 
是的,在 Silverlight 專案的一般狀況下,又是空空如也 ....
 

 
 
 

 
 
 
 
結果面板 Results Pannel
 
 
主要是測試 WPF / *.EXE 的程式有無錯誤
不過在 Silverlight 專案裡,若是 XAML 的語法有誤,一樣會顯示出來
 

 
 
 

 
 
 
 
好用工具庫 Asset Library
 
 
這個最難翻譯,這東東裡面都是控制項,但若是翻譯成「控制項庫」,反而更奇怪 ...
反正文章是俺寫,名詞俺來訂,就稱其為「好用工具庫」
 
最起碼在 Expression Blend 2 May Preview 版,Asset Library 只支援 WPF / *.EXE
 

 
( Silverlight 專案的這三個 Asset Library,在工具箱中都有了 )

筆者搞的一些小作品 筆者搞的 Flash 破解 Silverlight 俺搞的 30 首小曲子 ( 每首約花半個小時編曲 ) 在 PDF 檔嵌入 Flash ( 丑角與交趾陶的編製過程 ) IE-Based CD Title ( 筆者八百年前搞的 )