SDL2入门(八)surface抠图

 时间:2024-10-14 21:47:38

1、只需修改第三节课代码便可实现(增加两个函数)。如图红色标记。

SDL2入门(八)surface抠图

2、第10行:unit32是32位无符号整型数据,SDL_MapRGB是根据参数返回一个不透明的像素值。函数参剞麽苍足数:surface->format是surface的像素格式,后面三个参数分别是r(红red)、g(绿green)、b(蓝blue)的值。

SDL2入门(八)surface抠图

3、第11行:SDL_SetColorKey是一个抠色函数,把某个指定的像素变透明。函数参数:SDL_TRUE决定抠色,相反SDL_FALSE表示不抠色;colorkey为将要抠掉颜色的像素值。

SDL2入门(八)surface抠图

4、运行结果如图。总结:这方法需要先知道背景色的r、g、b值才行,而且这方法对比较单一的背景颜色才好使用。

SDL2入门(八)surface抠图

5、代码:#include<SDL2/SDL.h#include<挢旗扦渌;SDL2/SDL_image.h>int罪焐芡拂main(intargc,char**argv){SDL_Init(SDL_INIT_VIDEO);SDL_Window*window=SDL_CreateWindow("surface抠图",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=IMG_Load("./resource/circle.png");Uint32colorkey=SDL_MapRGB(surface->format,255,255,255);SDL_SetColorKey(surface,SDL_TRUE,colorkey);SDL_Rectbox={200,400,surface->w,surface->h};SDL_Texture*texture=SDL_CreateTextureFromSurface(renderer,surface);SDL_RenderCopy(renderer,texture,NULL,&box);SDL_RenderPresent(renderer);SDL_Delay(6000);SDL_FreeSurface(surface);SDL_DestroyTexture(texture);SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);SDL_Quit();}

  • 小米手机怎么删除内部存储空间其他文件
  • 如何查看小米手机里保存的所有大文件
  • 小米手机内部存储空间其它文件怎么删除
  • QQ浏览器怎么清除所有数据
  • 红米小米手机删掉视频还被占内存怎么解决?
  • 热门搜索
    容易感冒 豁达的近义词 黄金首饰怎么清洗 博大的近义词 究竟的近义词 大黄鱼怎么做 守候的近义词 感冒怎么好的快 飘动的近义词 气管炎怎么治