void CImage::ShowImage(CDC *pDC,HWND hWnd)
{
HDC hDC_Temp=GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
CFileStatus fstatus;
CFile file;
LONG cb;
double fX,fY;
fX = (double)pDC->GetDeviceCaps(HORZRES); //获取屏幕的长和宽
fY = (double)pDC->GetDeviceCaps(VERTRES);
if (file.Open(strImagePathName,CFile::modeRead)&&file.GetStatus(strImagePathName, 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);
//装入图形文件:
}
}
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
ImageExist=true;
OLE_XSIZE_HIMETRIC hmWidth; //图片的真实宽度
OLE_YSIZE_HIMETRIC hmHeight; //图片的真实高度
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
nShowSize=150;
pDC->SetStretchBltMode(STRETCH_HALFTONE); pPic->Render(hDC_Temp,25,15,nShowSize,nShowSize,0,hmHeight,hmWidth,-hmHeight, NULL);
pPic->Release();
file.Close();//关闭打开的文件
}
else
AfxMessageBox("Error Loading Picture From Stream!");
}
}
我想问一下,这段程序中读入的图像在内存中的指针是哪个? 我要是要对读入的图像进行像素的修改,我该怎么添加代码?
谢谢!
{
HDC hDC_Temp=GetDC(hWnd);
IPicture *pPic;
IStream *pStm;
CFileStatus fstatus;
CFile file;
LONG cb;
double fX,fY;
fX = (double)pDC->GetDeviceCaps(HORZRES); //获取屏幕的长和宽
fY = (double)pDC->GetDeviceCaps(VERTRES);
if (file.Open(strImagePathName,CFile::modeRead)&&file.GetStatus(strImagePathName, 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);
//装入图形文件:
}
}
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
ImageExist=true;
OLE_XSIZE_HIMETRIC hmWidth; //图片的真实宽度
OLE_YSIZE_HIMETRIC hmHeight; //图片的真实高度
pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);
nShowSize=150;
pDC->SetStretchBltMode(STRETCH_HALFTONE); pPic->Render(hDC_Temp,25,15,nShowSize,nShowSize,0,hmHeight,hmWidth,-hmHeight, NULL);
pPic->Release();
file.Close();//关闭打开的文件
}
else
AfxMessageBox("Error Loading Picture From Stream!");
}
}
我想问一下,这段程序中读入的图像在内存中的指针是哪个? 我要是要对读入的图像进行像素的修改,我该怎么添加代码?
谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货