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"...

sdl的缩放问题

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

C# 图片加载、导出、缩放、质量、缩略图

using System; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; us...

Jquery图片加载及缩放

  • 2010-05-13 16:44
  • 31KB
  • 下载

viewPager+photoView实现网络图片加载左右滑动+手势缩放功能+滑动到下一页其他页面恢复默认大小

前面两篇文章,我们讲了自定义viewpager+photoView实现本地图片的加载和收缩缩放。实现本地相册功能。 如果没有看的话可以先阅读以下,因为今天网络加载图片的功能,实在这个基础上做...

Android中当加载大图片时进行缩放

[1]Android中采用png格式的图片 , 使用 A(透明度)RGB 每一个像素占4byte , 所以所Android中图片的大小只与像素大小有关 , 且Android中的图片色彩更加丰富 .pa...

图片加载oom以及photoView缩放崩溃问题

查看大图这种需求在很多地方都用的到,而且产品说了,要可以缩放,要可以滑动哦。 然后就轮到技术人员来实现了。 首先,viewpager是必备的,其次放大图片photoView,然后就是嵌套来编写了。 ...

SDL 加载显示JPEG图片

在《 SDL点、线、面及图像加载 》一文中自己用SDL显示JPEG失败,现在有了解决方案。 关键函数: SDL_rwops.h:extern DECLSPEC SDL_RWops * SDLCAL...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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