剪切基础

来源:互联网 发布:锐捷linux客户端下载 编辑:程序博客网 时间:2024/04/29 20:12

剪切基础:
1.剪切通常定义为:"不画在视区或窗口之外的像素或图象部分。"就像Windows将剪切画向你的窗口的用户区的任何东西一样,你需要对运行在DirectX上的游戏这样做

2.如果你想写一个位图引擎画像素、直线、位图,需要你自己对画的线、点进行剪切。但是,DirectDraw可以帮助剪切位图,条件是位图正好是DirectDraw的画图模式,或者是IdirectDrawSurfaces模式。

3.DirectDraw提供的帮助是IDirectDrawSurfaces接口下的DirectDraw剪切器。需要你做的事是创建一个IDirectDrawClipper,给它有效的剪切区域,然后将他同画面连接。这样,当你用图形变换函数Blt()时,它将剪切到剪切区,如果你有适当的硬件的话,你就无需再做任何其他事情了。但是,首先看看如何剪切像素和创建一个剪切函数。

4.将像素剪切到视区

5.以硬拷贝的方式剪切位图
剪切位图同剪切像素一样简单,有两种方法:
(1).就像生成像素一样自由剪切位图中的每一个像素,这样做方法简单,但是速度慢。
(2).剪切位图的矩形边界到视区中,画位于视区中的位图部分。较复杂,但是快,几乎不影响执行,不会冲击内部循环。

6.剪切的基本思路
(1)首先在剪切函数的参数中得到画图的起使位置,位图的大小,位图的指针,还有VRAM的指针
(2)先判断位图是否在视区中,不在则直接返回
(3)判断起使位置(x1,y1)的位置
   if(x1<0)
      x1 = 0;
   if(y1<0)
      y1 = 0;
(4)判断终点(x2,y2)的位置
   if(x2>=SCREEN_WIDTH)
       x2 = SCREEN_WIDTH-1;
   if(y2>=SCREEN_HEIGHT)
       y2 = SCREEN_HEIGHT-1;
(5)设置VRAM与位图指针的起使位置
(6)将位图画在视图相应的位置