Дисклеймер: почему собрался это делать — потому что нет нигде нормального обучения, для С\С++, поэтому все бросают это дело, так как невозможно разобраться, просто ужас.
Смысл прозрачного фона для изображения кратко:
![](https://habrastorage.org/getpro/habr/upload_files/140/0c6/5f6/1400c65f630409c0a428726a313acf5f.png)
SDL дает возможность через SDL_SetColorKey убрать фон у картинки, оставив только нужное нам изображение.
Код, поехали:
#include<SDL2/SDL.h> int main(void) { SDL_Window* window; //объявление переменной окно SDL_Renderer* gRenderer; //объявление рендерной переменной. SDL_Surface *backgroundImage; //объявление слоев SDL_Surface *humanImage; SDL_Texture *backGroundTex; //объявление текстуры SDL_Texture *humanTex; SDL_Init(SDL_INIT_VIDEO); //яобъявление видео window = SDL_CreateWindow( "transparentImage", 0,0,640,480,SDL_WINDOW_OPENGL); //создание окна gRenderer = SDL_CreateRenderer(window, -1, 0); //привязка рендера к окну SDL_SetRenderDrawColor(gRenderer, 0, 0, 50, 255); //установка цвета red green blue bright SDL_RenderClear(gRenderer);//очистка экрана SDL_RenderPresent(gRenderer);//обновление экрана SDL_Delay(1000); //передышка 1 секунду backgroundImage = SDL_LoadBMP("hw.bmp");//подгрузка изображения humanImage = SDL_LoadBMP("foo.bmp"); SDL_SetColorKey( humanImage, SDL_TRUE, SDL_MapRGB( humanImage->format, 0, 0xFF, 0xFF ) ); //создание прозрачного изображения backGroundTex = SDL_CreateTextureFromSurface(gRenderer,backgroundImage); //создание текстуры SDL_RenderCopy(gRenderer,backGroundTex,NULL,NULL); //копирование текстуры в рендер SDL_RenderPresent(gRenderer); SDL_Delay(1000); humanTex = SDL_CreateTextureFromSurface(gRenderer,humanImage); /*уменьшение изображения*/ SDL_Rect topLeftViewport; topLeftViewport.x = 220; topLeftViewport.y = 220; topLeftViewport.h = 300; topLeftViewport.w = 250; SDL_RenderSetViewport( gRenderer,&topLeftViewport); SDL_RenderCopy(gRenderer, humanTex,NULL,NULL); SDL_RenderPresent(gRenderer); SDL_Delay(3000); SDL_DestroyWindow(window); //уничтожение окна SDL_Quit(); //выход return 0; }
ссылка на оригинал статьи https://habr.com/ru/articles/579526/
Добавить комментарий