SDL创建个窗口绘制个图片,响应个消息
代码比较简单,注释够详细了,不多说(例如头文件库文件就不说)
#include "stdafx.h" #include "SDL.h" #pragma comment(lib, "SDL.LIB") int _tmain(int argc, _TCHAR* argv[]) { SDL_Window* pSDLWindow = NULL; SDL_Renderer* pRenderer = NULL; SDL_Texture* pTexture = NULL; SDL_Rect srcRect; SDL_Rect dstRect; //初始化SDL if (SDL_Init(SDL_INIT_EVERYTHING) < 0) return false; //创建窗口 pSDLWindow = SDL_CreateWindow("SDLWnd", 200, 200, 640, 480, 0); if (NULL == pSDLWindow) return false; //创建Renderer pRenderer = SDL_CreateRenderer(pSDLWindow, -1, 0); //设置Render绘制时的颜色,透明度 SDL_SetRenderDrawColor(pRenderer, 255, 255, 255, 255); //加载图片到SDL_Surface SDL_Surface *pTmpSurface = SDL_LoadBMP("C:\\test.bmp"); // 按照实际更改图片名称及路径 if (NULL == pTmpSurface) return false; //使用SDL_Surface创建Texture pTexture = SDL_CreateTextureFromSurface(pRenderer, pTmpSurface); if (NULL == pTexture) return false; //释放SDL_Surface SDL_FreeSurface(pTmpSurface); //查询pTexture属性,主要是图片的宽高 SDL_QueryTexture(pTexture,NULL, NULL, &srcRect.w, &srcRect.h); //设置区域大小 dstRect.x = srcRect.x = 0; dstRect.y = srcRect.y = 0; dstRect.w = srcRect.w; dstRect.h = srcRect.h; //消息循环 bool bQuit = false; while(!bQuit) { SDL_Event sdl_event; if (SDL_PollEvent(&sdl_event)) { switch(sdl_event.type) { case SDL_QUIT: bQuit = true; break; default: break; } } //绘制 SDL_RenderClear(pRenderer);//清除上次内容 SDL_RenderCopy(pRenderer, pTexture, &srcRect, &dstRect);//将pTexture绘制到Render //SDL_RenderCopy(pRenderer, pTexture, NULL, NULL); // NULL means that use all texture( and renderer) //SDL_RenderCopyEx(pRenderer, pTexture, &srcRect, &dstRect,0, 0, SDL_FLIP_HORIZONTAL); //SDL_RenderCopyEx(pRenderer, pTexture, &srcRect, &dstRect,0, 0, SDL_FLIP_VERTICAL); //更新Render显示 SDL_RenderPresent(pRenderer); } //清理 SDL_DestroyWindow(pSDLWindow); SDL_DestroyRenderer(pRenderer); SDL_DestroyTexture(pTexture); SDL_Quit(); return 0; }