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;
}