我怎样才能打印"位图图像到窗口

时间:2015-12-07 02:20:50

标签: c++ visual-studio-2015 sdl

当我构建我的程序时它无法加载媒体,因为它无法找到图像,尽管图像在工作目录中也包含" vcxproj"和我的可执行文件这是正确的目录还是我没有正确链接?

Main.cpp的

//Using SDL and standard IO
#include <SDL.h>
#include <stdio.h>

//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;


bool init(); //starts SDL and creates a window

bool loadmedia(); //close function

void close(); //close function



SDL_Window* gWindow = NULL; //The window we will be rendering to

SDL_Surface* gSurface = NULL; //the surface contained by the window

SDL_Surface* gOpening = NULL; //The image we will load to screen

bool init()
{
    //Initialization flag
    bool success = true;

    //Initialize SDL
    if (SDL_Init(SDL_INIT_VIDEO) < 0)
    {
        printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
        success = false;
    }
    else
    {
        //Create window
        gWindow = SDL_CreateWindow("Welcome to Tenno", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
        if (gWindow == NULL)
        {
            printf("Window could not be created! SDL_Error: %s\n", SDL_GetError());
            success = false;
        }
        else
        {
            //Get window surface
            gSurface = SDL_GetWindowSurface(gWindow);
        }
    }

    return success;
}


bool loadMedia()
{
    //Loading success flag
    bool success = true;

    //Load splash image
    gOpening = SDL_LoadBMP("Project8A\Opening.bmp");
    if (gOpening == NULL)
    {
        printf("Unable to load image %s! SDL Error: %s\n", "Opening.bmp", SDL_GetError());
        success = false;
    }

    return success;
}

void close()
{
    //Deallocate surface
    SDL_FreeSurface(gOpening);
    gOpening = NULL;

    //Destroy window
    SDL_DestroyWindow(gWindow);
    gWindow = NULL;

    //Quit SDL subsystems
    SDL_Quit();
}

int main( int argc, char* args[] )
{
    //Start up SDL and create window
    if (!init())
    {
        printf("Failed to initialize!\n");
    }
    else
    {
        //Load media
        if (!loadMedia())
        {
            printf("Failed to load media!\n");
        }
        else
        {
            //Apply the image
            SDL_BlitSurface(gOpening, NULL, gSurface, NULL);

            //Update the surface
            SDL_UpdateWindowSurface(gWindow);

            //Wait two seconds
            SDL_Delay(2000);
        }
    }

    //Free resources and close SDL
    close();

    return 0;
}

0 个答案:

没有答案