请教,各位大虾请进
bjghm 2003-05-24 12:16:01
各位大虾,我怎样从内存里取出一个点的像素值(bmp,这一点在屏幕外面)?
我是这样打开bmp图的
//打开
CFileDialog dlg(TRUE);
dlg.m_ofn.lpstrFilter = "bmp文件(*.bmp)\0*.bmp\0\0";
dlg.m_ofn.lpstrTitle = "打开";
dlg.m_ofn.lpstrDefExt = "bmp";
if(IDOK == dlg.DoModal())
{
m_szFileName = dlg.GetPathName();
}
HBITMAP hBmp = (HBITMAP)LoadImage(::AfxGetInstanceHandle( ),
(LPCTSTR)m_szFileName, IMAGE_BITMAP,
0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(!hBmp)
{
MessageBox("ERROR: 文件未载入");
return;
}
if ( m_cBmp.m_hObject != NULL )
m_cBmp.Detach();
if(!m_cBmp.Attach(hBmp))
{
MessageBox("ERROR: 图象不能加载");
return;
}
// BITMAP bmp;
m_cBmp.GetBitmap(&bmp);
m_screenSize = CSize(bmp.bmWidth, bmp.bmHeight);
SetScrollSizes(MM_TEXT,m_screenSize); //设置滚动范围
//显示:
if(m_cBmp.m_hObject!=NULL)
{
// Get the size of the bitmap
CDC dcMemory;
dcMemory.CreateCompatibleDC(pDC);
BITMAP bmpInfo;
m_cBmp.GetBitmap(&bmpInfo);
CBitmap* pOldBitmap = dcMemory.SelectObject(&m_cBmp);
// pDC->BitBlt(0, 0, ( 904-465 ), ( 223-154 ), &dcMemory,
// 465, 154, SRCCOPY);
pDC->BitBlt(0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
0, 0, SRCCOPY);
dcMemory.SelectObject(pOldBitmap);
}