SDL资料(八):图象的一部分

 

SDL系列教程(八):显示图象的一部分

作者:akinggw

欢迎进入今天的课程,今天我们要讲解如何显示图象的一部分。也许你要问,这有什么用呢?

它的用处大的很,比如,我们在玩“大话西游”时,我们的窗口是不是只显示了程序的一部分。

同样还有精灵的显示,这个我们在后面会慢慢讲解。

在这篇教程中,我会简单地讲解如何在有限的窗口中显示一幅巨大的图片。

先看下面这张图片:

 

它的高宽分别是1000 X 1000。而我们的屏幕分辨率只有640X480,显然不能全部显示这幅图片。

打开我们前面的代码,在apply_surface函数中,你会找到下面这个函数:

SDL_BlitSurface( source, NULL, destination, &offset );

 

我们函数的第二个参数使用的是空,意思是不传值,但现在我们要使用它。

这个参数的结构是SDL_Rect,我们在前面使用了它来显示图片。

 

这个结构如下:

SDL_Rect{

Int x;               //X坐标

Int y;               //Y坐标

Int w;              //宽度值

Int h;               //高度值

}

 

SDL_BlitSurface函数的第一个参数表示要显示的图片;第二个参数表示从要显示的图片的X,Y坐标开始到W,H之内的范围;第三个参数表示将图片显示到哪里,可以是空的屏幕,也可以是一张图片上;第四个参数表示屏幕的X,Y坐标到W,H之内的范围。

 

现在,我们将apply_surface函数修改成下面的形式:

 

/*显示函数*/

 

void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination ,SDL_Rect* clip = NULL  )

{

    //建立一个暂时的矩形存储源图象的一部分

SDL_Rect offset;

  //得到矩形的坐标

 offset.x = x;

 offset.y = y;

//显示图象

 SDL_BlitSurface( source, clip, destination, &offset );

}

在这个函数中,我们主要就是添加了参数SDL_Rect* clip。

在主函数中,添加一个新的参数:

SDL_Rect clip;

然后在游戏循环中设置这个新的参数,如下:

clip.x=x;

 clip.y=y;

 clip.w=640;

 clip.h=480;

 

我们在这里将图象的显示坐标设置成变量X,Y,主要是我们想通过前面学习的键盘操作来控制图象的显示位置。图象显示的范围为从X,Y到W,H。

然后就可以显示它了:

apply_surface(0,0,demo,screen,&clip);

最后得到的显示结果如下图:

 

 

 

关于更多内容请访问金桥科普网站( http://popul.jqcq.com  )游戏开发栏目,如你需要游戏开发方面的书籍请参考金桥书城游戏频道(http://book.jqcq.com/category/1_70_740.html )。 如果你在阅读本篇文章时有什么好的建议请来信给我,我的E_mail: akinggw@126.com. 如果你在使用SDL时有什么问题,请到金桥科普网站(http://popul.jqcq.com  )游戏开发栏目,我将详细地为你解答。

 

接下来,我可能会讲解一点我学习网络引擎Raknet的一些心得,谢谢关注!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值