C语言控制台程序中添加背景图片

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

下面是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)不一样的控制台程序-----在控制台中输出图片
https://blog.csdn.net/haiross/article/details/38846633

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值