| 
 这是Quartz--v0.041版本的第二个例子,我们依然使用第一个例题的代码完成。如果没有看例题一的,请先看【Quartz--v0.04例题】Tu....ce 基本设备的建立[长]  
在本次例题中,主要完成图片的加载。图片是构成UI界面最基本的控件,几乎所有的UI控件都是由图片构成的,所以用好图片是UI最基本的一个步骤。 
  
首先拷贝例题一到新的目录,然后编译确保可以通过。我们新增加一个图片控件 
CStaticImage g_cImgbg; //背景图片 
在合适的位置对这个控件进行初始化 
SetRect(&r3,0,409,303,510); g_cImgbg.Init(250,250,304,104,r3); 简单介绍一下初始化函数 Init(屏幕坐标x,屏幕坐标y,控件有效宽度,控件有效高度,图片在纹理中的位置); (注* 目前已经内置了UI管理器,ID自动管理,这是与前几个版本的不同点)什么叫做有效宽度/高度呢?这是以后这个UI控件响应的有效区域,也就是UI真实大小,并不是真实渲染大小,这一点要注意。 
  
      还有一点很重要:Init函数是初始化函数,它向UI管理器注册了一个新的控件,因此,一个控件只能在生成的时候调用一次!如果需要动态改变控件的坐标,可以用变换矩阵的方式也可以用SetXY()等函数来达到这个效果! 
      控件的显示也是与控件的注册密不可分的,也就是说,先注册的会被先渲染,后注册的后渲染。 
       
   
这样,一个静态图片控件就设置完毕了,运行一下代码,就可以看到上面的效果了~~ (为了美观 把背景色改成 D3DCOLOR_XRGB(255,255,255)) 
  
 很多的朋友觉得静态图片都放在一张纹理里面放不下,因游戏中需要比如说封面,开场,帮助等很多的图片;怎么办呢?? 
 静态的图片提供了方便的重新载入功能例如 
 SetRect(&r3,16,164,390,400);  g_cImgDolig.Init(50,80,374,237,r3);  g_cImgDolig.ImageLoadTexture(".\\map.jpg"); //更改当前控件需要修改的图片 
  
这张图片就被载入了。 
如果另外一个控件也需要map.jpg这样图片需不需用要重新加载呢??当然不用,不然每一个控件都加在重复图片那不是浪费资源嘛~所以可以用这个方法: 
UI_ButtonOk.SetTexture(g_cImgDolig.GetTexture()) 
来得到曾经被载入到内存中的数据,实现资源优化~! 
[此贴子已经被作者于2009-4-20 16:18:23编辑过]  |