貼圖的描述
方式有兩種
// 1、aaa.jpg
// 2、file='aaa.jpg' res='' restype='0' dest='0,0,0,0' source='0,0,0,0' corner='0,0,0,0'
// mask='#FF0000' fade='255' hole='false' xtiled='false' ytiled='false'
第一種是最簡單的,加載圖片文件並將整張圖片拉伸鋪滿整個控件
第二種既支持從文件中加載圖片,也可以從資源中加載
1、如果是從文件加載,設置file屬性,如file='XXX.png',不要寫res和restype屬性
2、如果從資源加載,設置res和restype屬性,不要設置file屬性
3、dest屬性的作用是指定圖片繪制在控件的一部分上面(繪制目標位置)
4、source屬性的作用是指定使用圖片的一部分
5、corner屬性是指圖片安裝scale9方式繪制(scale9含義往下邊看)
6、mask屬性是給不支持alpha通道的圖片格式(如bmp)指定透明色
7、fade屬性是設置圖片繪制的透明度
8、hole屬性是指定scale9繪制時要不要繪制中間部分(有些地方對提升性能比較有用)
9、xtiled屬性設置成true就是指定圖片在x軸不要拉伸而是平鋪,ytiled屬性設置成true就是指定圖片在y軸不要拉伸而是平鋪
讓背景圖片平鋪要寫:xtiled='true' ytiled='true'
這個UI設計器是不識別的.
========================================================
Scale9的含義
它是使用網格將圖像划分為9個區域,如圖2所示,我用數字1-9標出了對應的區域,其中標紅色的區域是不需要縮放的,而標藍色的區域則是需要縮放的區域。
圖2 對圖片使用Scale9技術進行縮放
當這張圖片被放大,依據Scale9的定義,區域1,3,7,9需要保持原有的尺寸(通過對比左側和右側的圖像可以發現這一點),而其它區域則需要依據一定的規則改變自己的尺寸:
區域2,當圖片放大,本區域寬度增加,高度保持不變
區域4,當圖片放大,本區域高度增加,寬度保持不變
區域5,當圖片放大,本區域寬度和高度都增加
區域6,當圖片放大,本區域高度增加,寬度保持不變(規則與區域4一致)
區域8,當圖片放大,本區域寬度增加,高度保持不變(規則與區域2一致)
對於區域5,我們在做外觀設計的時候要重點注意,這個區域不要放置復雜圖形,對於單色或簡單漸變色而言,一定程度的放大是可以接受的,但如果是復雜圖形,那么放大所產生的失真是非常明顯的(當然如果是矢量圖形,就不會有這個問題,但矢量圖形對於CPU有較大的計算消耗,通常在性能敏感型的Flex應用中我們盡量使用位圖皮膚)。
==================================================================
Scale9在duilib中的實例應用
以控件Combo為例,原本皮膚如圖:
,寬度是71,現在設置一個長200的Combo控件效果如圖:
可以看到明顯被拉伸了,添加corner屬性代碼如下:
<Combo name="ComboClientDirSelect" text="TCP" height="20" width="200" itemshowhtml="true" itemtextcolor="#FF000000" itemselectedtextcolor="#FF000000" itemselectedbkcolor="#FFC1E3FF" itemhottextcolor="#FF000000" itemhotbkcolor="#FFE9F5FF" itemdisabledtextcolor="#FFCCCCCC" itemdisabledbkcolor="#FFFFFFFF" normalimage="file='Combo_nor.png' corner='5,2,30,2'" hotimage="file='Combo_over.png' corner='5,2,30,2'" pushedimage="file='Combo_over.png' corner='5,2,30,2'" dropboxsize="0,150">
此時效果如圖:
,
顯示正常了,
其中corner='5,2,30,2'的含義是#字的4條線分別到左上右下的距離然后把#中間的圖片進行拉伸最后達到完美效果.
