nim_duilib(14)之xml配置半透明窗体控件不透明
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在上文中已经出现了。
nim_duilib(14)之xml配置半透明窗体控件不透明的更多相关文章
- IOS 设置视图半透明子控件不透明
代码处理: UIColor *color = [[UIColor blackColor] colorWithAlphaComponent:0.6]; self.view.backgroundColor ...
- VC窗体透明而控件不透明以及Static文本背景透明方法
出自http://my.oschina.net/ypimgt/blog/60951 优点: 1.Dialog 窗体完全透明. 2. 窗体上的控件不透明. DC 绘制的图形不透明. ...
- winform窗体控件(全)
回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...
- (转)sl简单自定义win窗体控件
sl简单自定义win窗体控件 相信大家接触过不少win窗体控件ChildWin子窗口就的sl自带的一个 而且网上也有很多类似的控件,而今天我和大家分享下自己制作个win窗体控件,希望对初学 ...
- ASP.NET中 WebForm 窗体控件使用及总结【转】
原文链接:http://www.cnblogs.com/ylbtech/archive/2013/03/06/2944675.html ASP.NET中 WebForm 窗体控件使用及总结. 1.A, ...
- 如何在多线程中调用winform窗体控件
由于 Windows 窗体控件本质上不是线程安全的.因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态.还可能出现其他与线程相关的 bug,包 ...
- winform 自定义控件:半透明Loading控件
winform 自定义控件:半透明Loading控件 by wgscd date:2015-05-05 效果: using System;using System.Drawing;using Sys ...
- C# winform 跨线程更改窗体控件的属性
当winform程序中新开一个线程,是无法改变主线程中窗体控件的属性的,否则运行时会报错. 若想在其他线程中控制主线程中的窗体控件,则必须利用BeginInvoke方法. 例如:添加一个名为textb ...
- 如何:对 Windows 窗体控件进行线程安全调用
http://msdn.microsoft.com/zh-cn/library/ms171728(VS.90).aspx http://msdn.microsoft.com/zh-cn/library ...
随机推荐
- 洛谷 P4709 - 信息传递(置换+dp)
题面传送门 一道挺有意思的题罢-- 首先看到这种与置换乘法相关的题,首先把这些置换拆成一个个置换环,假设输入的置换有 \(m\) 个置换环,大小分别为 \(s_1,s_2,\cdots,s_m\),显 ...
- P4569 [BJWC2011]禁忌
题目传送门. 题意简述:给出大小为 \(n\) 的字典 \(s\).设函数 \(g(t)\) 表示 \(t\) 最多能被分割成的单词个数.等概率随机生成长度为 \(len\) 的字符串 \(T\),求 ...
- C++ and OO Num. Comp. Sci. Eng. - Part 3.
2. Expressions and Statements 声明是将一个种类型的变量引入程序的语句. 作用域 作用域又一对花括号限定,在所有花括号之外的为全局作用域. 在作用域内声明的变量为局部变量. ...
- nginx二级域名指向不同文件项目配置
需要使用泛域名解析, 并且加上空的判断,以保证没有二级域名的也可以访问 核心配置 server_name ~^(?<subdomain>.+)\.caipudq\.cn$;if ( $su ...
- 日常Java 2021/11/13
Java Applet基础 Applet是一种Java程序.它一般运行在支持Java的Web浏览器内.因为它有完整的Java API支持,所以Applet是一个全功能的Java应用程序.如下所示是独立 ...
- Flume(三)【进阶】
[toc] 一.Flume 数据传输流程 重要组件: 1)Channel选择器(ChannelSelector) ChannelSelector的作用就是选出Event将要被发往哪个Channel ...
- Angular中怎样创建service服务来实现组件之间调用公共方法
Angular组件之间不能互相调用方法,但是可以通过创建服务来实现公共方法的调用. 实现 创建服务命令 ng g service 服务路径/服务名 比如这里在app/services目录下创建stor ...
- C语言中的使用内存的三段
1.正文段即代码和赋值数据段 一般存放二进制代码和常量 2.数据堆段 动态分配的存储区在数据堆段 3.数据栈段 临时使用的变量在数据栈段 典例 若一个进程实体由PCB.共享正文段.数据堆段和数据栈段组 ...
- Oracle—网络配置文件
Oracle网络配置文件详解 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下. 1 ...
- 解决CSV文件用Excel打开乱码问题
这篇文章适合有一定编码基础的人看,纯手动解决乱码问题请参见: 转码保存后,重新打开即可. 转码操作如下: 编辑器->另存为->ASCII码格式文件/UTF-8含BOM格式->保存. ...