C语言 SDL1.2中的全屏使位置错误

mv1qrgav  于 2023-03-17  发布在  其他
关注(0)|答案(1)|浏览(105)

我的屏幕分辨率是1920x1080。为了有一个全屏窗口,我调用了SDL_SetVideoMode(1920, 1080, 32, SDL_HWSURFACE | SDL_FULLSCREEN);。然而,当我试图在这个屏幕上添加一个位置为x = 0和y = 0的图像时,它被定位在屏幕之外,就像我的屏幕分辨率比窗口低一样。它只显示了窗口的一部分。
为了看到图像,我需要给予image.ximage.y一个大于0的值。例如,下面是image.x = 190image.y = 100的结果:

正如你所看到的,图像被卡在左上角,这可以给予你大致知道当image.x = 0image.y = 0时它在哪里。
下面是我的代码:

int     main (int argc, char **argv)
{
    SDL_Surface *screen = NULL;
    SDL_Surface *image = NULL;
    SDL_Rect pos_image;

    SDL_Init(SDL_INIT_VIDEO);
    screen = SDL_SetVideoMode(1920, 1080, 32, SDL_SWSURFACE | SDL_FULLSCREEN);
    SDL_WM_SetCaption("SDL Test", NULL);
    image = SDL_LoadBMP("pack_images_sdz/image.bmp");
    SDL_SetColorKey(image, SDL_SRCCOLORKEY, SDL_MapRGB(image->format, 0, 0, 255));
    pos_image.x = 190;
    pos_image.y = 100;
    SDL_BlitSurface(image, NULL, screen, &pos_image);
    SDL_Flip(screen);
    pause();
    SDL_Quit();
    return EXIT_SUCCESS;
}

我想知道为什么会这样。为什么x = 0和y = 0的位置在屏幕之外?

e4eetjau

e4eetjau1#

它可能是你的图像的宽度和高度,我肯定不知道很多关于SDL1.2,但这个问题可能是从图像,尝试另一个图像,并重新启动程序,如果它不工作,我会建议你重新安装SDL1.2祝你好运

相关问题