MFC对话框中用IPicture类加载了一幅图片,现在想对图片进行操作,想获得指向该图像第一个像素的指针,怎么

voidCTD1::OnOpenPicture(){//TODO:AddyourcontrolnotificationhandlercodehereCFileDialog... void CTD1::OnOpenPicture()
{
// TODO: Add your control notification handler code here
CFileDialog m_dlg(true);
m_dlg.m_ofn.lpstrFilter="Support Files(*.jpg)\0*.jpg\0Support Files(*.bmp)\0*.bmp\0All Files(*.*)\0*.*\0\0";
if(m_dlg.DoModal()==IDOK)
{
CString filepath = m_dlg.GetPathName(); //文件路径
m_pathname=filepath;
UpdateData(FALSE);

// COM 初始化
::CoInitialize(NULL);

// 读入图片文件内容
CFile file;
file.Open( filepath, CFile::modeRead | CFile::shareDenyNone );

//申请内存空间
DWORD dwSize = file.GetLength();
HGLOBAL hMem = ::GlobalAlloc(GMEM_MOVEABLE, dwSize);

//获得内存指针
LPVOID lpBuf = ::GlobalLock(hMem);

//读文件进内存
file.ReadHuge(lpBuf, dwSize);

//关闭文件
file.Close();
::GlobalUnlock( hMem );

//long nWidth, nHeight;
IStream * pStream = NULL;
//IPicture * pPicture = NULL;

//由hMem创建内存流对象
hr = ::CreateStreamOnHGlobal(hMem, TRUE, &pStream);
ASSERT(SUCCEEDED(hr));

//从流获取图像
hr = ::OleLoadPicture(pStream, dwSize, TRUE, IID_IPicture,
reinterpret_cast<LPVOID*>(&pPicture));
ASSERT(hr==S_OK);

//long nWidth, nHeight;
pPicture->get_Width(&nWidth); // 宽
pPicture->get_Height(&nHeight); // 高

//获得控件大小及DC
CRect rc;
GetDlgItem(IDC_STATICPICTURE)->GetClientRect(&rc);
CDC* pDC = GetDlgItem(IDC_STATICPICTURE)->GetDC();

//贴图
pPicture->Render(pDC->GetSafeHdc(), 0, 0, rc.Width(), rc.Height(),
0, nHeight, nWidth, -nHeight, NULL);

//清理工作
pPicture->Release();
pStream->Release();
::CoUninitialize();
}
}

以上是我打开图像的程序,希望高手帮帮我,不胜感激!!!
展开
 我来答
dut_wish
2011-03-09 · TA获得超过1634个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:504万
展开全部
以pPicture 取得你这个图片的高与宽
建一个同样大小的搜空设备兼容位图,然后pPicture->Render 其中设敬樱备描述符句柄HDC使用这个
设备兼容位图的HDC作为参数,这样你的Picture就渲染到了这个设备兼容位图上,然后就是常规操作了。如果你对设备兼容位亮漏丛图的操作不清楚,就去看Win32程序设计这本书,百度文档上肯定有
看位图那章,很多例子的。
更多追问追答
追问
可以给我一个小例子吗,我想知道那图像的首地址,即指向它的指针
追答
这两天公司挺忙没时间写例子给你,你去看看 Win32程序设计 影子位图那章应该可以,如果不行周末我再回你。
abc553226713
2011-03-11 · 超过10用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:32.5万
展开全部
我有一个类是结合GDAL控制图片。皮穗基只要是图片神马的 不管神马图片 都能弄。想族缓怎么弄就怎么弄
首先要会GDAL。燃谨。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-20
展开全部
这个 有点困难
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式