关闭

SDL加载和缩放图片小例子

标签: imagenullvideo
3097人阅读 评论(4) 收藏 举报
分类:

   借助于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(); 

}

 

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17148次
    • 积分:273
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论