SDL加载和缩放图片小例子

原创 2012年03月23日 12:14:56

   借助于SDL开发包,写的关于SDL加载和缩放图片的小例子;

#include<SDL/SDL.h>
#include<SDL/SDL_image.h>
#include <SDL/SDL_rotozoom.h>

int main(int argc,char *argv[])
{
 
 SDL_Rect  rect = {0,0,640,480};
 SDL_Rect  myrect={0,0,640,480};
 SDL_Rect bmprect;
 SDL_Surface *image;
 SDL_Surface *bmp;
 
 SDL_Event event;
 bmprect.x = rect.x ;
 bmprect.y = rect.y;
 bmprect.w = rect.w-200 ;
 bmprect.h = rect.h-200 ;
 SDL_Init(SDL_INIT_VIDEO);
 
 SDL_Surface *screen=SDL_SetVideoMode(640,480,0,SDL_INIT_NOPARACHUTE);
 if(screen==NULL) {
  printf("setVideoMode Failure");
  exit(1);
 }
 image=SDL_LoadBMP("sample.bmp");
 if(image==NULL){
   printf("load Failure\n");
   exit(1);
  }
 int sw = image->w;
 int sh = image->h;

 double xz = (double)bmprect.w/(double)sw;
 double yz = (double)bmprect.h/(double)sh;
 
 while(1){
  
  SDL_FillRect(screen,&myrect,0); //清屏函数,也可以对某一块区域进行设置颜色可以达到清屏的效果
        bmp = rotozoomSurfaceXY(image,0,xz,yz,1);  //缩放
  SDL_BlitSurface(bmp,NULL,screen,&bmprect); .//将图片添加到screen
  SDL_UpdateRects(screen,1,&rect);  //刷新
  SDL_FreeSurface(bmp);
  
  SDL_WaitEvent(&event);   //事件了
  switch(event.type)
  {
  
  case SDL_KEYDOWN:if(event.key.keysym.scancode == 9)
    {
     SDL_FreeSurface(image);
     SDL_Quit();  exit(0);
    }

   break;
  case SDL_MOUSEMOTION:

   break;
  case SDL_KEYUP:
    printf("scancode=%d\n",event.key.keysym.scancode);
     if(event.key.keysym.scancode == 98)
    {
     bmprect.y-=10;
     
    }
    else if(event.key.keysym.scancode == 102)
    {
     bmprect.x+=10;
    
    }
    else if(event.key.keysym.scancode == 100)
    {
     bmprect.x-=10;
     
    }
    else if(event.key.keysym.scancode == 104)
    {
     bmprect.y+=10;
     
    }
    else if(event.key.keysym.scancode == 21)
    {
     bmprect.w+=10;
     bmprect.h+=10;
    }
    else if(event.key.keysym.scancode == 20)
    {
     bmprect.w-=10;
     bmprect.h-=10;
    }
    break; 
  case SDL_MOUSEBUTTONDOWN: break;
  case SDL_MOUSEBUTTONUP:
   break;
  case SDL_QUIT:
   exit(1);
  
  }
  xz = (double)bmprect.w/(double)sw;  //缩放的尺寸

  yz = (double)bmprect.h/(double)sh;
 }
  
 SDL_FreeSurface(image);
 sleep(3);
 SDL_Quit(); 

}

 

SDL图片的旋转与缩放

#include #include "SDL_rotozoom.h" #include "SDL_image.h" #include "math.h" #include "string.h"...
  • douyuan888
  • douyuan888
  • 2013年07月01日 10:25
  • 1587

sdl的缩放问题

SDL是一种既是开源的,也是跨平台的多媒体开发包,在各种平台上应用很广,经常和FFMPEG等解码器同时使用。对于在windows mobile等缺乏通用播放器的平台来说,是一种很好的选择。网上很多代码...
  • mao0514
  • mao0514
  • 2016年06月12日 08:27
  • 4111

SDL2缩放窗口in MFC

SDL窗口缩放大坑一个解决方案没有使用SDL的消息响应 改变MFC 播放窗口大小—–>改变SDL窗口大小,SDL_S额头WindowSize(…)—–>释放SDL绘图内容(SDL_WINDOW不要释放...
  • scylhy
  • scylhy
  • 2016年07月08日 10:44
  • 1577

FFmpeg和SDL,读内存中的视频流,进行缩放和播放

  • 2015年06月12日 19:14
  • 26.55MB
  • 下载

SDL图片的旋转与缩放

#include #include "SDL_rotozoom.h" #include "SDL_image.h" #include "math.h" #include "string.h"...
  • douyuan888
  • douyuan888
  • 2013年07月01日 10:25
  • 1587

SDL学习笔记二(图片的加载和显示)

图像加载是游戏常用到的步骤,SDL提供了简单的方法来加载并显示图片 不过在这之前,得先创建一个窗口来显示,SDL提供下面这个简便的函数 SDL_Surface* SDL_SetVideoMode(...
  • fp_hzq
  • fp_hzq
  • 2013年04月28日 17:56
  • 1994

sdl的缩放问题

作者:蓝梅居士出处:http://www.zixundao.com/thread-1672-1-4.htmlSDL是一种既是开源的,也是跨平台的多媒体开发包,在各种平台上应用很广,经常和FFMPEG等...
  • yuehungulei1987
  • yuehungulei1987
  • 2011年06月10日 11:49
  • 3959

Ffmpeg和SDL教程(八)软件缩放

Ffmpeg和SDL教程(八)软件缩放软件缩放库libswscale 近来ffmpeg添加了新的接口:libswscale来处理图像缩放。但是在前面我们使用img_convert来把RGB转换成YUV...
  • jinhaijian
  • jinhaijian
  • 2010年09月02日 19:22
  • 3058

SDL 加载显示JPEG图片

在《 SDL点、线、面及图像加载 》一文中自己用SDL显示JPEG失败,现在有了解决方案。 关键函数: SDL_rwops.h:extern DECLSPEC SDL_RWops * SDLCAL...
  • theArcticOcean
  • theArcticOcean
  • 2017年05月06日 10:49
  • 749

总结:SDL_第一课 在屏幕上显示一张图片

#include "SDL.h" int main( int argc, char* args[] ) { //The images SDL_Surface* hello = NULL...
  • u012325397
  • u012325397
  • 2014年05月16日 22:29
  • 1471
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SDL加载和缩放图片小例子
举报原因:
原因补充:

(最多只允许输入30个字)