duilib进阶教程 -- Container控件 (3)
前面两个教程的目的是教大家与MFC结合,那么从这篇起,将不再使用MFC,而使用纯win32项目,本文的所有知识已经在《duilib入门教程》里面讲过了,因此基础知识不再赘述。
代码下载:http://download.csdn.net/detail/qq316293804/6433161
效果如下(可拖拽边缘调节窗口大小,图片会自动居中)

此例子唯一需要说明的就是XML,代码如下:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Window size="800,520" sizebox="4,4,4,4" caption="0,0,0,32" mininfo="600,400">
<VerticalLayout bkcolor="#FF070700">
<HorizontalLayout height="40" />
<HorizontalLayout>
<VerticalLayout />
<VerticalLayout width="336" bkimage="skin\bk_logo_light.png">
<HorizontalLayout />
<HorizontalLayout height="164" bkimage="skin\bk_logo_image.png">
<HorizontalLayout>
<VerticalLayout />
<VerticalLayout width="168">
<VerticalLayout height="40" />
<VerticalLayout height="20" bkimage="skin\bk_logo_text.png" />
<VerticalLayout />
</VerticalLayout>
<VerticalLayout />
</HorizontalLayout>
</HorizontalLayout>
<HorizontalLayout />
</VerticalLayout>
<VerticalLayout />
</HorizontalLayout>
<HorizontalLayout height="50" />
</VerticalLayout>
</Window>
可以看到到处都是HorizontalLayout 、VerticalLayout,然后几个bkimage也很乱,这里有几个原因:
1、由于迅雷的中间那一块是由三个图片组成,所以布局很麻烦,其实用一张图片的话,就简洁很多了,这里估计是为了重用图片。



2、方式不太对。
如果中间只有一个图片的话,按照上面的XML布局就很简洁了,但由于有三个图片,这三个图片都需要自适应窗口大小,所以才造成上面的XML代码那么乱,那么有没有优化的地方呢?
当然有,在《入门教程》里我们还有一个控件没有介绍,那就是Container,顾名思义就是容器控件,容器控件有什么用呢? 它的用处就是可以使子窗口的行为随着Container一致变化。比如我们的窗口有10个按钮,如果没放在Container里的话,那么想要隐藏所有控件,就必须调用10次隐藏函数,如果想将所有控件往左移的话,也需要操作10次,同样,上面因为有3个图片,所以为了让他们都适应窗口大小,我们做了3次布局。而如果这些控件都在Container里的话,那就方便多了,就算有100个按钮,如果要隐藏的话,我们只需要调用1次隐藏函数,即隐藏Container控件即可,这样它的子控件都会隐藏。同样,如果把上面3个图片都放到Container里去,我们的XML代码就简明多啦,优化后的代码如下:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Window size="800,520" sizebox="4,4,4,4" caption="0,0,0,32" mininfo="600,400">
<VerticalLayout bkcolor="#FF070700">
<HorizontalLayout height="40" />
<HorizontalLayout>
<VerticalLayout />
<VerticalLayout width="336">
<HorizontalLayout />
<Container height="290">
<Control float="true" pos="0,0,0,0" width="336" height="230" bkimage="skin\bk_logo_light.png" />
<Control float="true" pos="1,1,0,0" width="336" height="164" bkimage="skin\bk_logo_image.png" />
<Control float="true" pos="84,38,0,0" width="168" height="20" bkimage="skin\bk_logo_text.png" />
</Container>
<HorizontalLayout />
</VerticalLayout>
<VerticalLayout />
</HorizontalLayout>
<HorizontalLayout height="50" />
</VerticalLayout>
</Window>
可以看到bkimage都在一起了,HorizontalLayout、VerticalLayout 也不那么乱了,Container控件暂时就讲到这里啦。
duilib进阶教程 -- Container控件 (3)的更多相关文章
- duilib进阶教程 -- Container控件的bug (14)
在<duilib进阶教程 -- TreeView控件的bug (9)>里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. ...
- duilib进阶教程 -- TreeView控件(6)
代码下载:http://download.csdn.net/detail/qq316293804/6483905 上一个教程中,界面已经和迅雷一模一样啦,大小和位置一个像素都不差哟,亏得Alberl调 ...
- duilib进阶教程 -- 各种控件的响应 (10)
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有 ...
- duilib进阶教程 -- TreeView控件的不足 (7)
上一个教程中,虽然播放列表的框架和迅雷一样了,但是字体大小.文字居中还没有解决.如果是刚学duilib,搞定这个可不容易,因为在有了入门教程的指导后,很容易就想到去看[属性列表.XML],但是当你试了 ...
- duilib进阶教程 -- Label控件的bug (8)
上个教程说到了TreeView的文字不能垂直居中的问题,而我们用LabelUI其实是可以垂直居中的,为什么不说是TreeView的bug,而说是Label控件的bug呢?因为影响TreeView垂直居 ...
- duilib进阶教程 -- TreeView控件的bug (9)
一.不自动调整子控件的宽度(TreeView宽度小于260时) 相信亲们用同样的代码,显示效果肯定和Alberl不一样吧~O(∩_∩)O~ 嘿嘿,仔细对比下,看看你们的列表头背景图片是下面这样的么? ...
- 百度地图Api进阶教程-默认控件和自定义控件2.html
<!DOCTYPE html> <html> <head> <meta name="viewport" content="ini ...
- duilib进阶教程 -- 总结 (17)
整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完 ...
- 2013 duilib入门简明教程 -- 复杂控件介绍 (13)
首先将本节要介绍的控件全部拖到界面上,并调整好位置,如图: 然后将Name属性改成其他名字, 不能是[控件名+UI+数字]这种,因为这是DuiDesigner ...
随机推荐
- Problem C: 找气球
Description zstu集训队经常举办月赛,但是气球经常不够.现有多个桶,每个桶有一种颜色,每个桶可能对应多个题,给定每个题对应的桶,打比赛的时候,经常某道题被发现是水题,但是该颜色的气球没有 ...
- CocosCreator原生平台退出游戏,暂停和继续
原生平台退出游戏,方法为:cc.director.end();官方解释:End the life of director in the next frame暂停游戏,方法: cc.director.p ...
- weblogic10 部署 spring+cxf ,调用时报:cannot create a secure XmlInputFactory
weblogic10 部署 spring+cxf ,调用时报:cannot create a secure XmlInputFactory 一个cxf webservice项目部署到tomcat能 ...
- STL——模拟实现空间配置器
目录 问题 SGI版本空间配置器-std::alloc 一级空间配置器 二级空间配置器 Refill.chunkAlloc函数 最后,配置器封装的simple_alloc接口 问题 我们在日常编写C+ ...
- mongodb.副本集配置方法(使用keyfile认证部署)
前提条件: - 已安装MongoDB, 版本以3.6为例 - 系统: Debian9 - 建议做副本集的话, 以3台以上为宜, 本文以1台主机2个服务为例 1.创建数据存放的目录, 并授权 sudo ...
- 使用 IntraWeb (35) - TIWJQueryWidget
可有可无的东西, 因为没有它也可以方便达成其目的, 使用它貌似更形象一些; 也可以通过它调用其他 js 库. 利用类似手段, 有人推出了 CGDevTools; 它主要是利用 JQuery 扩展而成, ...
- markdown 语法和工具
一 简明语法 来自: http://maxiang.info/ 二 markdown 语法: https://github.com/rhiokim/haroopad/blob/develop/Syn ...
- Android典型界面设计(5)——使用SlidingMenu和DrawerLayout分别实现左右侧边栏
一.问题描述 侧边栏是Android应用中十分常见的界面效果,可随主屏在左侧或右侧联动,是特别适应手机等小屏幕特性的典型界面设计方案之一,常用作应用的操作菜单,如图所示 实现侧边栏可以使用第三方组件s ...
- 图像的视差匹配(Stereo Matching)
这里要求用我们自己计算得到的视差图和给的视差图作比較来比較我们得到的视差图的好坏程度,我视差图返回的值是计算得到的视差乘以3之后的图,所以在计算时我不是两个值相差大于1,而是大于3.由于两个图像都乘3 ...
- MDX Step by Step 读书笔记(七) - Performing Aggregation 聚合函数之 Max, Min, Count , DistinctCount 以及其它 TopCount, Generate
MDX 中最大值和最小值 MDX 中最大值和最小值函数的语法和之前看到的 Sum 以及 Aggregate 等聚合函数基本上是一样的: Max( {Set} [, Expression]) Min( ...