Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在函数中绘制图像_C++_Sdl_Sdl 1.2 - Fatal编程技术网

C++ 在函数中绘制图像

C++ 在函数中绘制图像,c++,sdl,sdl-1.2,C++,Sdl,Sdl 1.2,我希望在按下空格键时绘制图像。这是我的代码: void drawImage() { rect.x = 100; rect.y = 100; SDL_Surface *image = IMG_Load("image.png"); SDL_BlitSurface(image, NULL, screen, &rect); } 这就是它的名字: while (SDL_PollEvent(&event)) { if (event.type == SDL_

我希望在按下空格键时绘制图像。这是我的代码:

void drawImage()
{
   rect.x = 100;
   rect.y = 100;

   SDL_Surface *image = IMG_Load("image.png");
   SDL_BlitSurface(image, NULL, screen, &rect);
}
这就是它的名字:

while (SDL_PollEvent(&event))
{
    if (event.type == SDL_QUIT)
    {
        gameRunning = false;
    }
    if (event.type == SDL_KEYDOWN)
    {
        if (event.key.keysym.sym == SDLK_SPACE)
        {
            drawImage();
        }
    }

}

当我按空格键时,图像没有绘制。怎么了?

屏幕缓冲区(SDL_曲面)。

函数是否在主循环中绘制,而不使用空格键

bool draw = false;

while (SDL_PollEvent(&event))
{
    if (event.type == SDL_QUIT)
    {
        gameRunning = false;
    }
    if (event.type == SDL_KEYDOWN)
    {
        if (event.key.keysym.sym == SDLK_SPACE)
        {
           draw = true;
        }
    }

}


int main()
{  
  if(draw){ 
    drawImage();
  }
    //DO SOME ERROR CHECKING

}
排队后

SDL_BlitSurface(image, NULL, screen, &rect);


也许你错过了翻页surfaces@Photon哎呀,就是这样。但当我按下空格键时,图像会出现,但当我释放空格键时,图像会消失。那么我该如何解决这个问题呢?@WilhelmMichaelsen:SDL是即时绘制,而不是保留的场景图。如果希望图像在未来的帧中显示,则必须在未来的帧中再次渲染(保存在内存中,不要每次都访问该文件)。他的代码没有填充/清除屏幕功能,因此情况并非如此。
SDL_UpdateRect(screen, 0, 0, 0, 0);