如何在C语言中添加背景图片

如题! 那位大侠告诉我哈!!
2025-02-14 06:56:04
推荐回答(3个)
回答1:

  1. C语言写控制台程序是无法加图片的,只能用命令行输出,最多就是设置下背景和字体,颜色之类的。如果开发API窗口程序,完全依赖于操作系统的函数库。C语言本身并不提供这类函数。

  2. 下面是windows系统下实现的函数代码,第一个参数是图片的存放的位置,第二个参数是窗口句柄。

    HRESULT ShowPic(char *lpstrFile,HWND hWnd)
    {
    HDC hDC_Temp=GetDC(hWnd);
    IPicture *pPic;
    IStream *pStm;
    BOOL bResult;
    HANDLE hFile=NULL;
    DWORD dwFileSize,dwByteRead;
    //打开图形文件
    hFile=CreateFile(lpstrFile,GENERIC_READ,
    FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
    if (hFile!=INVALID_HANDLE_VALUE)
    {
    dwFileSize=GetFileSize(hFile,NULL);//获取文件字节数  
    if (dwFileSize==0xFFFFFFFF)
    return E_FAIL;
    }
    else
    {
    return E_FAIL;
    }
    //分配全局存储空间  
    HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
    LPVOID pvData = NULL;
    if (hGlobal == NULL)
    return E_FAIL;
    if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块  
    return E_FAIL;
    ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件读入内存缓冲区
    GlobalUnlock(hGlobal);
    CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
    //装入图形文件
    bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);
    if(FAILED(bResult))
    return E_FAIL;
    OLE_XSIZE_HIMETRIC hmWidth; //图片的真实宽度, 单位为英寸 
    OLE_YSIZE_HIMETRIC hmHeight; //图片的真实高度, 单位为英寸
    pPic->get_Width(&hmWidth);
    pPic->get_Height(&hmHeight);
    //转换hmWidth和hmHeight为pixels距离,1英寸=25.4毫米
    int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);
    int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);
    //将图形输出到屏幕上(有点像BitBlt)
    bResult=pPic->Render(hDC_Temp,0,0,nWidth,nHeight,0,hmHeight,hmWidth,-hmHeight,NULL);
    hmHeight,NULL);
    pPic->Release();
    CloseHandle(hFile);//关闭打开的文件
    if (SUCCEEDED(bResult))
    {
    return S_OK;
    }
    else
    {
    return E_FAIL;
    }
    }

回答2:

c语言中没有定义添加图片的函数,你只有将相关代码嵌套在画图的函数中,
通过调用来实现它……

回答3:

定义一个图文,,然后链接就行了