当前位置:C++技术网 > 精选软件 > GDI中的剪切区域(裁剪区域)是什么

GDI中的剪切区域(裁剪区域)是什么

更新时间:2016-01-25 21:51:36浏览次数:1+次

    剪切区域,我是听过很多次了。但是,却没有真正搞明白是怎么回事。今天就在此深入学习一番,彻底搞明白剪切区域是何方神圣。(我是边总结边深入学习的哦。)
    简单来说,剪切区域(裁剪区域)就是GDI绘图的范围,超出范围的内容是不会绘制的。平时我们在客户区绘制图案输出文字等是针对整个客户区的。似乎剪切区域对我们来说并不存在。因为我们在客户区作画似乎没有受到任何限制。
    实际上,默认的整个客户区的范围就是一个剪切区域!正是因为剪切区域和客户区一样大,所以你享受的是相对的自由。只要你不触碰边界,不越界,自然就没有障碍。
    如果你将绘制的东西超越了客户区的大小,你知道超出的部分是无法看到的。你一定会觉得理所当然了。实际上,超越客户区边界的图案,根本就不会绘制,而不是绘制了你看不到而已。什么叫做限制绘制的范围?就是不允许在范围之外绘图。绘制范围与是否可见没有直接关系。如果说在范围之外绘图了只是你看不见,那就与剪切区域的概念冲突了,逻辑上就是错误的。所以,就根据这个道理来分析,绘图只在剪切区域的范围内,超出的部分直接被丢弃了。
    绘图被丢弃是什么意思呢?我们一般绘制的是位图,位图数据就是一个二维数组。系统通过剪切区域的范围来计算哪些数据将会用来绘图。自然是,在剪切范围内的数据才会发往显卡绘图显示出来,超出的就不会发到显卡显示了。
    剪切区域用来限制绘图的范围,将会使我们的绘图变得简单。如果将一个图片的局部画面绘制到客户区的一个局部范围,图片其他画面不能画到客户区上,自然我们使用剪切区域就很简单。因为我们只要设置剪切区域在客户区指定的范围,不管你用多大的图片贴在客户区上,都只会在剪切区域中看到贴图。你直接将整个图片往客户区贴即可。剪切区域保证了整个图片贴在客户区上,只有剪切区域才能贴图,其他保持原样。

    请看下面的图:

使用剪切区域绘制六角形的效果

【使用剪切区域绘制六角形的效果】
    从图中可以看到,我们这是了一个矩形区域,然后在整个客户区范围贴了一个六角形的图案,然会绘制的效果如右边所示。