免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 715 | 回复: 0
打印 上一主题 下一主题

SDL系列教程(八):图象的一部分 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-26 11:13 |只看该作者 |倒序浏览

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);
最后得到的显示结果如下图:






本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19671/showart_118369.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP