SDL Game Development-第2章-2.剪裁式显示BMP

来源:互联网 发布:近期的网络大事件 编辑:程序博客网 时间:2024/05/17 08:22
在最终的render()中,将纹理拷贝到显存中时,source和destination矩形框的改变,可以实现BMP的剪裁式显示
原型:
SDL_RenderCopy(渲染器指针,纹理指针,源图矩形指针,目标位置矩形指针);

//尝试之前,修改背景色为纯黑:
                //设置当前渲染色,rgba,红绿蓝透明四通道                SDL_SetRenderDrawColor(m_pRenderer, 0x0, 0x0, 0x0, 0xFF);

//尝试一:
//如果在查询纹理代码之后,加上为源矩形框的高宽赋值代码:
m_srcRect.w = 50;m_srcRect.h = 50;//那么显示到屏幕上的图片,将只有0~50的范围

//尝试二:
//修改目的矩形值
m_destRect.x = 100;m_destRect.y = 100;//这将改变图片在屏幕上的显示位置


//尝试三:
//在以上的基础上,再次修改源的起点值
m_srcRect.x = 50;m_srcRect.y = 50;



//尝试四:
//如果传入RenderCopy的源和目的值都为NULL,则源图会将整个屏幕占满
//修改render()中的代码:

SDL_RenderCopy(m_pRenderer, m_pTexture, 0, 0);

最后:完整的代码片段(Game.cpp中)

//然后设置需要绘制到屏幕的位置和高宽。以下代码是使用原图片高宽m_srcRect.w = 50;   //尝试一:改变源图需要显示的高宽m_srcRect.h = 50;m_destRect.x = m_srcRect.x = 0;m_destRect.y = m_srcRect.y = 0;m_destRect.w = m_srcRect.w;m_destRect.h = m_srcRect.h;m_destRect.x = 100;m_destRect.y = 100;m_srcRect.x = 50;m_srcRect.y = 50;    std::cout << "init success\n";    m_bRunning = true;  //所有初始都成功,可以开始主循环了    return true;}void Game::render(){    SDL_RenderClear(m_pRenderer);   //清屏    //绘制纹理对象    //SDL_RenderCopy(m_pRenderer, m_pTexture, &m_srcRect, &m_destRect);    SDL_RenderCopy(m_pRenderer, m_pTexture, 0, 0);    SDL_RenderPresent(m_pRenderer); //双缓冲翻转,新内容显示到屏幕上}


0 0