加入JPG图片1陈.doc
文本预览下载声明
加入JPG图片1陈
/////////////////////////////////////////////////////////////////////////////
// CIm4View drawing
void CIm4View::OnDraw(CDC* pDC)
{
::CoInitialize(NULL); // COM 初始化
HRESULT hr;
CFile file;
file.Open( D:\\aa.jpg , CFile::modeRead | CFile::shareDenyNone ); // 读入文件内容 文件路径D:\\aa.jpg
DWORD dwSize = file.GetLength();
HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, dwSize );
LPVOID lpBuf = ::GlobalLock( hMem );
file.ReadHuge( lpBuf, dwSize );
file.Close();
::GlobalUnlock( hMem );
IStream * pStream = NULL;
IPicture * pPicture = NULL;
// 由 HGLOBAL 得到 IStream,参数 TRUE 表示释放 IStream 的同时,释放内存
hr = ::CreateStreamOnHGlobal( hMem, TRUE, pStream );
ASSERT ( SUCCEEDED(hr) );
hr = ::OleLoadPicture( pStream, dwSize, TRUE, IID_IPicture, ( LPVOID * )pPicture );
ASSERT(hr==S_OK);
long nWidth,nHeight; // 宽高,MM_HIMETRIC 模式,单位是0.01毫米
pPicture-get_Width( nWidth ); // 宽
pPicture-get_Height( nHeight ); // 高
/*
////////原大显示//////
CSize sz( nWidth, nHeight );
pDC-HIMETRICtoDP( sz ); // 转换 MM_HIMETRIC 模式单位为 MM_TEXT 像素单位
pPicture-Render(pDC-m_hDC,0,0,sz.cx,sz.cy,0,nHeight,nWidth,-nHeight,NULL);
*/
////////按窗口尺寸显示////////
CRect rect; GetClientRect(rect);
pPicture-Render(pDC-m_hDC,0,0,rect.Width(),rect.Height(),0,nHeight,nWidth,-nHeight,NULL);
if ( pPicture ) pPicture-Release();// 释放 IPicture 指针
if ( pStream ) pStream-Release(); // 释放 IStream 指针,同时释放了 hMem
::CoUninitialize();
}
关于IPicture::Render函数
1、IPicture::Render简介
HRESULT Render(
HDC hdc, //Handle of device context on which to render the image
long x, //Horizontal position of image in hdc
long y, //Vertical position of image in hdc
long cx, //Horizontal dimension of destination rectangle
long cy, //Vertical dimension of destination rectangle
OLE_XPOS_HIMETRIC xSrc,
//Horizontal offset in source picture
OLE_YPOS_HIMETRIC ySrc,
//Vertical offset in source picture
OLE_XSIZE_HIMETRIC cxSrc,
//Amount to copy horizontally in source picture
OLE_YSIZE_HIMETRIC c
显示全部