更新时间:2023-10-22 17:41:05
你们好,最近小艾特发现有诸多的小伙伴们对于BMP格式图片如何没背景,bmp格式图片这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 首先,加载这张图片“问号。bmp”放入内存。使用函数SDL_LoadBMP,函数参数是一个图片路径字符串,函数返回一个表面指针。
2、 用结构SDL _表面的指针变量表面接受它。
3、 第九行创建了一个SDL _矩形的结构变量框来存储表面的显示坐标和大小。
4、 Surface-w和surface-h分别是曲面的宽度和高度。
5、 Box有四个成员变量,分别是box.x、box.y、box.w和box.h,前两个是曲面的显示坐标,后两个是曲面的显示大小。
6、 这里我把曲面显示在屏幕的左上角,显示坐标(0,0),显示尺寸正好是曲面的原始尺寸。
7、 补充一点:SDL的坐标如下图所示。横轴是X轴,纵轴是Y轴。箭头方向上的X或Y值越大。
8、 如果手机分辨率为1280*720,则右上角坐标为(720,0)。左下角(0,1280)。右下角(720,1280)。中心坐标(720/2,1280/2),即(360,640)。
9、 第十行创建了一个结构为SDL纹理的指针变量。SDL_CreateTextureFromSurface函数从字面上猜测纹理是根据表面创建的。
10、 该函数返回一个SDL _纹理结构的指针变量。
11、 Surface不能直接用在渲染器上,需要转换成纹理,相当于绘画的材质。
12、 第十一行SDL_RenderCopy是将纹理粘贴到渲染器上。函数参数:NULL表示纹理被截取的部分,
13、 这里是全部;框表示窗口上纹理的显示坐标和显示大小。
14、 不要忘记在退出程序前释放内存。
15、 SDL free surface: release surface
16、 SDL _ destroy texture: destroy texture
17、 运行结果
18、 zusammenfassung der Zeichnung:SDL _表面*-SDL _纹理*-SDL _渲染器*-SDL _窗口*
19、 代码:
20、 #includeSDL2/SDL.h
21、 intmain(intargc,char**argv)
22、 {
23、 SDL_Init(SDL_INIT_VIDEO);
24、 SDL _ Window * Window=SDL _ Create a window ('Show extension picture of bitmap file, SDL _ Window position _ center, SDL _ Window position _ center, 720, 1280, SDL _ Window _ display);
25、 SDL_Renderer*renderer=SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);
26、 SDL_RenderClear(renderer);
27、 SDL _ surface * surface=SDL _ load BMP (' /resource/question mark. BMP’);
28、 SDL_Rectbox={0,0,surface-w-50,surface-h-50};
29、 SDL_Texture*texture=SDL_CreateTextureFromSurface(renderer,surface);
30、 SDL_RenderCopy(renderer,texture,box,box);
31、 SDL_RenderPresent(renderer);
32、 SDL_Delay(2000);
33、 SDL_FreeSurface(surface);
34、 SDL_DestroyTexture(texture);
35、 SDL_DestroyRenderer(renderer);
36、 SDL_DestroyWindow(window);
37、 SDL_Quit();
38、 }
以上就是bmp格式图片这篇文章的一些介绍,希望对大家有所帮助。