(CEGUI)统一度量系统


本文内容已经移至我最新的个人博客,欢迎大家到我的新网站交流学习。 查看文章请点我。






















































































































统一度量系统使用指南


注意:此教程仅适用于CEGUI >= 0.4.0


统一度量系统使得我们可以用相对部分和绝对部分共同来表示一个坐标或大小。这给窗口布局带来了极大的方便。比如:你可以用相对尺寸来表示高度,使用绝对大小表示宽度,或者混合使用。


统一度量系统共有三种形式:

* UDim : 简单的一维 * UVector2 : 由两个UDim组成的二维向量 * URect : 用四个UDim表示一个矩形,依次为:左,上,右,下

UDim UDim是最简单的了格式为 :{scale, offset} 例如 :{1,0}

格式为 :{scale, offset} 例如 :{1,0} 父窗口的值乘以“scale”然后加上offset就是最后的结果(单位都是像素)。例如:假如上面的例子是窗口的UnifiedWidth属性值,我们将得到和其父窗口一样宽的窗口。另一个例子: {0.5, 25} 这将使得到的窗口宽度为其父窗口的一半加上25像素。

使用单一UDim作为其值的属性有:

* UnifiedXPosition * UnifiedYPosition * UnifiedWidth * UnifiedHeight


UVector2 UVector2是用来表示位置和大小的。格式为 :{{x-scale, x-offset}, {y-scale, y-offset}} 例如 :{{1, 0}, {1, 0}}


UVector2中包含的两个UDim很像。还是用例子说明吧:假如上面的例子代表窗口的UnifiedSize属性,我们将得到和它的父窗口一样大小的窗口。 {{1,0},{0,100}}


上例将产生一个和其父窗口一样宽,但是高度固定为100像素的窗口。

使用Uvector2作为其值的属性有:

* UnifiedPosition * UnifiedSize * UnifiedMinSize * UnifiedMaxSize

URect 最后的一种是URect。它有点特殊,它定义了左,上,右,下四个坐标,而不是大小或位置。由于参数很多,我将用“ls”代替“left-scale”,用“to”代替“top-offset”等等。格式为 :{{ls,lo},{ts,to},{rs,ro},{bs,bo}} 例如 :{{0,0},{0,0},{1,0},{1,0}}


上述代码是DefaultWindow类型窗口的默认矩形。它将覆盖其父窗口的整个区域。只有一个属性使用URect值 ---- UnifiedAreaRect。我们定义矩形区域而不是其大小的做法是很聪明的。比如:假如我们想使一个窗口覆盖它的父窗口,但要为父窗口的四边分别留出10像素的大小,代码可以这样写: {{0,10},{0,10},{1,-10},{1,-10}}


此例可以看出,绝对部分可以取负数。

XML中的应用举例 <Property Name="UnifiedPosition" Value="{{0.1,10},{1.0,-30}}"></Property>


X-position:父窗口宽度的10% + 10像素 Y-position:父窗口的高度 - 30像素


<Property Name="UnifiedSize" Value="{{0.6,5},{0.3,20}}"></Property>


Width:父窗口宽度的60% + 5像素 Height:父窗口高度的30% + 20像素


<Property Name="UnifiedXPosition" Value="{0.25,-5}"></Property>


X-position:父窗口宽度的25% - 5像素


<Property Name="UnifiedAreaRect" Value="{{0.1,0},{0.1,0},{0.9,0},{0.9,0}}"></Property>


X-position:父窗口宽度的10% Y-position:父窗口高度的10% Width:父窗口宽度的80% Height:父窗口高度的80%

你可能感兴趣的:((CEGUI)统一度量系统)