C++怎么直接在win32程序中显示图片?
6个回答
2013-03-11
展开全部
win32 console application?那玩意显示不了图片。你在建立工程的时候选择w32application才行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个示例,参考一下:
CString sStartBmp = “C:\\startbmp\\start.jpg";
IStream *pStm = NULL;
CFileStatus fstatus;
CFile file;
LONG cb;
if (file.Open(sStartBmp,CFile::modeRead)&&file.GetStatus(sStartBmp,fstatus)&& ((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
}
}
file.Close();
}
CRect rc;
GetClientRect(rc);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height()-30);
memDC.SelectObject(&bmp);
memDC.FillSolidRect(0,0,rc.Width(),rc.Height()-30,COLOR_AQUA);
if(pStm != NULL)
{
IPicture *pPic = NULL;
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
pPic->Render(memDC,0,0,rc.Width(),rc.Height()-30,0,hmHeight,hmWidth,-hmHeight,NULL);
pPic->Release();
}
pStm->Release();
}
pDC->BitBlt(0,0,rc.Width(),rc.Height()-30,&memDC,0,0,SRCCOPY);
CString sStartBmp = “C:\\startbmp\\start.jpg";
IStream *pStm = NULL;
CFileStatus fstatus;
CFile file;
LONG cb;
if (file.Open(sStartBmp,CFile::modeRead)&&file.GetStatus(sStartBmp,fstatus)&& ((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
}
}
file.Close();
}
CRect rc;
GetClientRect(rc);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height()-30);
memDC.SelectObject(&bmp);
memDC.FillSolidRect(0,0,rc.Width(),rc.Height()-30,COLOR_AQUA);
if(pStm != NULL)
{
IPicture *pPic = NULL;
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
pPic->Render(memDC,0,0,rc.Width(),rc.Height()-30,0,hmHeight,hmWidth,-hmHeight,NULL);
pPic->Release();
}
pStm->Release();
}
pDC->BitBlt(0,0,rc.Width(),rc.Height()-30,&memDC,0,0,SRCCOPY);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先你得确定要显示在哪?因为显示图片是需要一个窗体的。
然后去考虑如何显示,比如加载图片,然后用GDI函数绘制。
然后去考虑如何显示,比如加载图片,然后用GDI函数绘制。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
原生C++(不适用类似WCF)使用CImage库、OpenCV库等;
VC++ 使用GDI/GDI+库,简单点儿的直接使用pictureBOX控件
VC++ 使用GDI/GDI+库,简单点儿的直接使用pictureBOX控件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以添加bmp文件到一个图片控件上
追问
可是我不是MFC的,我的是控制台程序。
追答
..不是MFC也可以的,但是是控制台我就不知道了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询