天天看點

Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)

原文: Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)

系統: Win7sp1 32位

IDE: Microsoft VisualStudio 2013 Ultimate

Blend 2013

工程: .Net Framework4.5.1

工具: Photoshop CS6

================================

首先明确一點,ToggleButton實際上是CheckBox的變形,分為了三種狀态Checked、Unchecked、Indeterminate

Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)

1、制作PSD模闆檔案,如下圖,背景删除有利于後續控件制作。
           

  

Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)
Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)
2、啟動Blend2013,其他版本亦可。建立一個WPF Application工程,然後如圖所示導入PSD檔案           
Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)

導入PSD檔案後如圖所示

Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)

圖中我進行了标記:

① PSD模闆中ToggleButton的Checked狀态

② PSD模闆中ToggleButton的Unchecked狀态

③ PSD檔案中對應圖層儲存的格式:Editable content--這個是我們需要的格式,這樣導入後的圖形可以編輯,例如填充顔色,改變描邊等等;Flattened bitmap -- 這個就是儲存成為一張普通的圖檔,如果是做個按鈕的貼圖還可以,在此例中我們不需要

④ 可能你也會看到這樣的提示,提示表明Photoshop中使用的一些特效在Blend中不支援,不要緊隻管導入,有什麼問題我們後面可以處理。

至于需要導入的模闆,我隻勾選了OFF組裡面的3個(就是②對應的那個圖),當然你也可以選擇ON組裡面的,個人喜好了,那個bg就不要勾選了,就是個白色背景,我們需要的是透明背景。選擇好了後點OK。

Blend導入完成後的狀态如圖所示,應該隻有紅框中的一個按鈕

Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)
Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)

注:btn_07為ToggleButton在Checked狀态下顯示的綠色對勾。這個是我用PS中切片切出來的,因為我勾選的白色OFF狀态下的模闆,是以我需要通過代碼做出Checked狀态下(ON模闆)的模樣。可能你導入後的圖形顔色會有丢失情況,那是因為Photoshop中使用的一些特效Blend中不支援,不要緊,我們可以在PS中做切片把圖檔切出來。例如我的off icon.png這個檔案導入後就變成了黑色的,在PSD模闆中應該是紅色的。

3、導入PSD模闆完成後,應如圖所示。應該隻有OFF_Copy這一個畫布(Canvas)
           
Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)
然後我們做如圖中黃色的那部分操作,把這個畫布(Canvas)轉成一個UserControl,點選後會彈出一個讓你起名字的對話框,
輸入自定義的名稱後會在工程中生成一個UserControl控件。如圖所示:
           
Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)
接下來,我們需要做一個控件的模闆(Template),把控件相關的Path、Image等等的控件都包含進去。

這樣做是因為我們需要把這個自定義的控件轉換成ToggleButton,

如果不做這步,直接把節點UserControl改成ToggleButton會有問題滴,至于什麼問題可以自己進行嘗試,反正我是試過了。步驟如圖所示:
           
Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)
點選建立空模闆後會彈出一個給模闆起名字的視窗,如圖所示:           
Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)

① 模闆的名稱

② 和③其實這兩個是一起的,如果選擇② ,那麼自定義的這個模闆就會放置在App.xaml中,可以将來做為其他控件的模闆,本例中我們隻有這一個控件,那麼就選擇③了。

點選OK後,你會發現Design區域的控件不見了,隻有一個藍色的空白框在那裡。此時我們來看代碼,如圖所示:

Blend_技巧篇_導入PSD檔案制作ToggleButton (Z)

我們需要把包括Grid節點在内的代碼替換UserContro.Resources節點下的Grid,替換完成後又看到了我們自定義的控件了,不再是一個空白的藍色框了。

因為我們做的這個控件需要Checked、Unchecked事件,并且最好還是個按鈕,是以ToggleButton正好符合我們的條件,那麼我們就把節點UserControl改成ToggleButton,這樣這個控件就繼承了ToggleButton的屬性。

繼續閱讀