nim_duilib(14)之xml配置半透明窗體控件不透明


before starting

note

截至目前,我只能用xml寫一些簡單的布局和設置控件屬性,循序漸進吧。
正在學習nim_duilib的xml的一些屬性。

xml配置半透明

GTAV中就有很多控件不透明而背景半透明的案例。剛進游戲的加載界面、任務找人界面......

shadowattached屬性

<Attribute name="shadowattached" default="true" type="BOOL" comment="窗口是否附加陰影效果,如(true)"/>

它是一個窗口的屬性,需要背景半透明,則需要設置shadowattachedfalse。其值及意義如下:

value 作用
true 默認值,給窗口加上陰影背景
false 則不會給窗口額外增加背景

當設置為false時,此時窗體的背景為全透明

顏色

一個例子

<TextColor name="bk_ground_color_trans_50" value="#8FBA6500" />

這樣的例子,可以在global.xml中發現有很多。其中,name是為了方便引用該顏色;value是該項的顏色值。
Note,這里的顏色是16進制格式。
其中,value由以下幾個部分組成:Alpha通道值RedGreenBlue.

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在上文中已經出現了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM