SDL2入门(二)显示一张bmp格式的图片

 时间:2024-10-12 11:46:20

1、首先要把这张图片“问号.bmp”加载到内存中。利用函数SDL_LoadBMP,函数参数为一个图片路径字符串,函数返回一个surface指针。用结构体SDL_Surface的指针变量surface去接受。

SDL2入门(二)显示一张bmp格式的图片

2、第九行创建了SDL_Rect的一个结构体变量box用来存储surface的显示坐标和大小。surface->w、surface->h分别是surface的宽度和高度。box有四个成员变量,分别是box.x、box.y、box.w、box.h。前两个是surface的显示坐标,后两个是surface的显示大小。这里我把surface显示在屏幕的左上角,显示坐标(0,0),显示大小刚刚好是surface的原始大小。

SDL2入门(二)显示一张bmp格式的图片

3、补充一点:SDL的坐标如下图所示,横向的为x轴,纵向的为y轴,往箭头方向x或y值就越大。假如手机分辨率为1280*720,那么右上角坐标(720,0)。左下角(0,1280)。右下角(720,1280)。中心坐标(720/2,1280/2),即(360,640)。

SDL2入门(二)显示一张bmp格式的图片

4、第十行用结构体SDL_Texture创建一个指针变量。而SDL_CreateTextureFromSurface函数从字面上就猜到了,根据surface创建texture,函数返回一个结构体SDL_Texture的指针变量。surface不能直接用在renderer上,所以需要转换成texture,texture相当于绘画的素材。

SDL2入门(二)显示一张bmp格式的图片

5、第十一行SDL_RenderCopy是把texture粘贴在renderer上。函数参数:NULL表示texture截取的部分,这里为全部;&box表示texture在window上的显示坐标和显示大小。

SDL2入门(二)显示一张bmp格式的图片

6、在退出程序之前不要忘记释放内存。SDL_FreeSurface:释放surfaceSDL_DestroyTexture:销毁texture

SDL2入门(二)显示一张bmp格式的图片

7、运行结果

SDL2入门(二)显示一张bmp格式的图片

8、总结绘图方式:SDL_Surface*->SDL_Texture*->SDL_Renderer*->SDL_Window*代码:#include<SDL2/SDL.h>intmain(intargc,char**argv){SDL_Init(SDL_INIT_VIDEO);SDL_Window*window=SDL_CreateWindow("显示bmp图片",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,720,1280,SDL_WINDOW_SHOWN);SDL_Renderer*renderer=SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);SDL_RenderClear(renderer);SDL_Surface*surface=SDL_LoadBMP("./resource/问号.bmp");SDL_Rectbox={0,0,surface->w-50,surface->h-50};SDL_Texture*texture=SDL_CreateTextureFromSurface(renderer,surface);SDL_RenderCopy(renderer,texture,&box,&box);SDL_RenderPresent(renderer);SDL_Delay(2000);SDL_FreeSurface(surface);SDL_DestroyTexture(texture);SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);SDL_Quit();}

  • U盘安装Linux CentOS 6.5 64位操作系统
  • 奇迹世界2如何注册账号?
  • 用七巧板怎样拼一艘大邮轮?
  • 用七巧板怎样拼一个旋转的彩色风车呢?
  • 使用天天模拟器体验《大话西游2》电脑版攻略
  • 热门搜索
    缅怀先烈的手抄报内容 禁毒手抄报资料 小学生手抄报制作大全 我成长我快乐手抄报 手抄报中秋 爱我家乡手抄报 三年级手抄报图片 关于地震的手抄报图片 双节手抄报 劳动节手抄报简单漂亮