before starting
note
截至目前,我只能用xml寫一些簡單的布局和設置控件屬性,循序漸進吧。
正在學習nim_duilib的xml的一些屬性。
xml配置半透明
GTAV中就有很多控件不透明而背景半透明的案例。剛進游戲的加載界面、任務找人界面......
shadowattached屬性
<Attribute name="shadowattached" default="true" type="BOOL" comment="窗口是否附加陰影效果,如(true)"/>
它是一個窗口的屬性,需要背景半透明,則需要設置shadowattached為false。其值及意義如下:
value | 作用 |
---|---|
true | 默認值,給窗口加上陰影背景 |
false | 則不會給窗口額外增加背景 |
當設置為false時,此時窗體的背景為全透明。
顏色
一個例子
<TextColor name="bk_ground_color_trans_50" value="#8FBA6500" />
這樣的例子,可以在global.xml中發現有很多。其中,name是為了方便引用該顏色;value是該項的顏色值。
Note,這里的顏色是16進制格式。
其中,value由以下幾個部分組成:Alpha通道值、Red、Green、Blue.
name | value |
---|---|
Alpha | 8F |
Red | BA |
Green | 65 |
Blue | 00 |
其中,alpha表示透明度,范圍0~255, 255為不透明,0為全透明。
一個配置窗口半透明的例子
從上面可以知道,shadowattached設置為false,窗口此時為全透明,額,那么要實現半透明,就需要一個半透明的controls於當前窗口大小全匹配,這樣就可以實現效果了,當然,理論上可以設置窗口的背景為一張半透明的背景圖(此方法沒有嘗試過)。
Window標簽
Window標簽的代碼如下
<Window size="900,600" caption="0,0,0,35" shadowattached="false" >
size
size指定了窗口(寬X高)為900x600
caption
- caption,一個例子,caption="x1,y1,x2,y2", 其中, 各個字段的意義如下
x1 距離左邊界的距離;rcCaption.left
y1 距離上邊界的距離; rcCaption.top
x2 距離右邊界的距離;rcCaption.right
y2 距離上邊界的距離; rcCaption.bottom
shadowattached
shadowattached設置為false,此時窗口時全透明的。
半透明標簽
我用一個垂直布局控件VBox.貼合窗口,使其和窗口大小一致,這樣,通過設置VBox的透明度實現半透明效果。
VBox 源碼
<VBox bkcolor="bk_ground_color_trans_50" height="stretch" width="stretch">
其中,bk_ground_color_trans_50來自上文的顏色中的例子,我把它定義在global.xml中。這里同時設定寬度和高度為拉伸,這樣就能和窗口一樣大了。
一個效果
可以看見,已經達到了我們想要的結果,控件不透明,窗口背景半透明。 效果差了點。
一個簡單配置界面半透明的代碼
樣式
其中,blue為一個按鈕
源碼
上面的例子貼xml的代碼,太長了,下面這個簡單點。
<?xml version="1.0" encoding="UTF-8"?>
<Window size="500,500" shadowattached="false" roundcorner="10,10" >
<VBox bkcolor="bk_ground_color_trans_50">
<Control />
<VBox width="stretch" height="stretch">
<Control />
<HBox halign="center" width="auto" halign="center">
<Button class="btn_global_blue_80x30" text="blue"/>
</HBox>
<Control />
</VBox>
<Control />
</VBox>
</Window>
bk_ground_color_trans_50在上文中已經出現了。