TRegion RRegion

来源:互联网 发布:linux ntp客户端配置 编辑:程序博客网 时间:2024/05/17 09:20

from:http://www.cnblogs.com/dymx101/archive/2010/03/26/1696859.html

TRegion
Clipping Region- ABC。
这个ABC代表一个2维的区域,这个区域被图形,图形窗口服务器,文本窗口服务器所使用以定义要更新的显示区域,或是所有的操作必须要发生在其中的区域。

一个TRegion由一个TRect的数组来实现,region越是复杂,需要用来表示它的TRect就越多。

一个clipping region开始的时候有5个矩形空间。加入某个操作导致需要更多的空间,那么就会尝试分配更多的矩形。假如不能够分配到所需的空间,一个错误标记位就会被设置,接下来涉及到这个region的任何操作都没有效果。可以用CheckError()这个函数来测试这个错误标记位;Clear()用来清除它。

应用程序的重画逻辑有如下的几种方式来处理TRegion:
1. 最小的方式,应用程序把TRegion传递给graphic context作为clipping region;当graphics context激活到一个window的时候,这个clipping region就会自动被安装。

2. 假如应用程序希望避免重画region中公用的区域外的对象,他们可以用TRegion::BoundingRect()去返回一个绑定到clipping region的矩形,并且只描画矩形中的基本元素。

3. 假如应用程序希望得到更好的控制,他们可以用Operator[]获取到组成clipping region的单个的矩形。

应用程序可以通过操作clipping region来限制重画的部分以减小屏幕区域的大小,相比于由window server提供的clipping region。为了达到这个目的,一些个操作clipping region的函数会被使用,比如:增加或是移除矩形,发现两个region的交叉或是结合部。

- BoundingRect()
得到绑定到这个region的最小的矩形。
- Tidy()
合并有相同长度边界相邻的矩形。

class RRegion : public TRegion
扩展区域
这个类提供构造和析构TRegion的方法,包括一个用来扩展region的粒度。一个region的粒度表示当这个对象被创建的时候内存槽的数目,同时表示当RRegion超出了可用的槽数后要扩展的分配的新内存槽的数目。默认的粒度是5。


原创粉丝点击