首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位图不会在SDL中加载

位图不会在SDL中加载
EN

Stack Overflow用户
提问于 2011-06-28 18:41:58
回答 1查看 6.8K关注 0票数 1

****FIXED__******,原来我的位图文件被破坏了。我可以打开文件查看它,但我的应用程序不能。我做了一个新的图像,它运行良好。

我在sdl中显示位图图像时有问题。程序以代码2退出,所以我知道位图没有加载。我在windows 7 64位上使用vc2010。BMP的名称是hello.bmp,我试着将它放在应用程序文件、源文件和项目文件的旁边,但它仍然不会加载它。我还试着把它放在c:\中,然后从那里加载,没有任何结果。这是我第一次尝试使用SDL。以下是代码:

代码语言:javascript
复制
#include "stdlib.h"
#include "SDL.h"

    int main(int argc, char *argv[])
    {
        SDL_Surface *screen;    //This pointer will reference the backbuffer
        SDL_Surface *image;    //This pointer will reference our bitmap sprite
        SDL_Surface *temp;    //This pointer will temporarily reference our bitmap sprite
        SDL_Rect src, dest;    //These rectangles will describe the source and destination regions of our blit

        //We must first initialize the SDL video component, and check for success
        if (SDL_Init(SDL_INIT_VIDEO) != 0) {
            printf("Unable to initialize SDL: %s\n", SDL_GetError());
            return 1;
        }

        //When this program exits, SDL_Quit must be called
        atexit(SDL_Quit);

        //Set the video mode to fullscreen 640x480 with 16bit colour and double-buffering
        screen = SDL_SetVideoMode(640, 480, 16, SDL_DOUBLEBUF | SDL_FULLSCREEN);
        if (screen == NULL) {
            printf("Unable to set video mode: %s\n", SDL_GetError());
            return 1;
        }

        //Load the bitmap into a temporary surface, and check for success
        temp = SDL_LoadBMP("hello.bmp");
        if (temp == NULL) {
            printf("Unable to load bitmap: %s\n", SDL_GetError());
            return 2;
        }

        //Convert the surface to the appropriate display format
        image = SDL_DisplayFormat(temp);

        //Release the temporary surface
        SDL_FreeSurface(temp);

        //Construct the source rectangle for our blit
        src.x = 0;
        src.y = 0;
        src.w = image->w;    //Use image->w to display the entire width of the image
        src.h = image->h;    //Use image->h to display the entire height of the image

        //Construct the destination rectangle for our blit
        dest.x = 100;        //Display the image at the (X,Y) coordinates (100,100)
        dest.y = 100;
        dest.w = image->w;    //Ensure the destination is large enough for the image's entire width/height
        dest.h = image->h;

        //Blit the image to the backbuffer
        SDL_BlitSurface(image, &src, screen, &dest);

        //Flip the backbuffer to the primary
        SDL_Flip(screen);

        //Wait for 2500ms (2.5 seconds) so we can see the image
        SDL_Delay(2500);

        //Release the surface
        SDL_FreeSurface(image);

        //Return success!
        return 0;
    }
EN

回答 1

Stack Overflow用户

发布于 2012-01-10 15:07:40

您正在加载位图。因此,如果您使用的是,那么有一个简单的修复方法。转到add new file,然后单击resource。您可以在visual studio中创建一个位图文件。因此,复制位图,然后单击visual studio上的编辑,将位图平平打开,然后单击“粘贴”。完成后,将图像的名称更改为代码中的图像,这样就可以很好地工作,因为没有链接问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6511491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档