我用VS2022,使用putimage时图片无法显示,第一遍时可以,如何解决?(语言-c语言)


#include
#include
#include
#pragma comment( lib, "MSIMG32.LIB")

void transparentimage3(IMAGE* dstimg, int x, int y, IMAGE* srcimg) //新版png
{
    HDC dstDC = GetImageHDC(dstimg);
    HDC srcDC = GetImageHDC(srcimg);
    int w = srcimg->getwidth();
    int h = srcimg->getheight();
    BLENDFUNCTION bf = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };
    AlphaBlend(dstDC, x, y, w, h, srcDC, 0, 0, w, h, bf);
}
enum My {
    WIDTH=480,
    HEIGHT=700
};
IMAGE bk;
IMAGE img_role[2];
void loadImage() {
    loadimage(&bk, _T("./C:/Users/86136/source/repos/images/background.png"));
}
void gameDraw() {
    loadImage();
    putimage(0, 0, &bk);
}

int main() {
    initgraph(WIDTH, HEIGHT);//创建窗口480,700
    _getch();
    return 0;
}

gameDraw() 调用加到32行前。

#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#pragma comment(lib, "MSIMG32.LIB")

void transparentimage3(IMAGE *dstimg, int x, int y, IMAGE *srcimg) //新版png
{
    HDC dstDC = GetImageHDC(dstimg);
    HDC srcDC = GetImageHDC(srcimg);
    int w = srcimg->getwidth();
    int h = srcimg->getheight();
    BLENDFUNCTION bf = {AC_SRC_OVER, 0, 255, AC_SRC_ALPHA};
    AlphaBlend(dstDC, x, y, w, h, srcDC, 0, 0, w, h, bf);
}
enum My
{
    WIDTH = 480,
    HEIGHT = 700
};
IMAGE bk, t;
IMAGE img_role[2];

void loadImage()
{
    loadimage(&bk, _T("2.jpg"));
}
void gameDraw()
{
    loadImage();
    loadimage(&t, _T("2.png"));
    transparentimage3(&bk, 20, 50, &t);
    putimage(0, 0, &bk);
}
int main()
{
    initgraph(WIDTH, HEIGHT); //创建窗口480,700
    gameDraw();
    _getch();
    return 0;
}

img