在MFC的对话中加载了一幅图像,现在想获取指向该图像的一个指针,如何操作?
这是我写的一个打开位图的程序://Dlg类里添加成员变量HBITMAPm_hbm;//在OnInitDialog从文件装载图像m_hbm=(HBITMAP)LoadIma...
这是我写的一个打开位图的程序:
//Dlg类里添加成员变量
HBITMAP m_hbm;
//在OnInitDialog从文件装载图像
m_hbm = (HBITMAP)LoadImage(NULL, 文件路径, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
在OnPaint里画
//获得控件DC
CDC* ctrlDC = GetDlgItem(控件ID)->GetDC();
//获得控件大小
CRect rc;
GetDlgItem(控件ID)->GetClientRect(&rc);
//获得图像信息
BITMAP bm;
GetObject(m_hbm, sizeof(BITMAP), &bm);
//选择图像
CDC bmDC;
bmDC.CreateCompatibleDC(ctrlDC);
bmDC.SelectObject(m_hbm);
//贴图
ctrlDC->StretchBlt(0, 0, rc.Width(), rc.Height(), bmDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
//清理
bmDC.DeleteDC();
在OnDestroy里清理工作
DeleteObject(m_hbm);
接下来就是想获取指向这幅位图的指针,如何操作呢,求具体方法! 展开
//Dlg类里添加成员变量
HBITMAP m_hbm;
//在OnInitDialog从文件装载图像
m_hbm = (HBITMAP)LoadImage(NULL, 文件路径, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
在OnPaint里画
//获得控件DC
CDC* ctrlDC = GetDlgItem(控件ID)->GetDC();
//获得控件大小
CRect rc;
GetDlgItem(控件ID)->GetClientRect(&rc);
//获得图像信息
BITMAP bm;
GetObject(m_hbm, sizeof(BITMAP), &bm);
//选择图像
CDC bmDC;
bmDC.CreateCompatibleDC(ctrlDC);
bmDC.SelectObject(m_hbm);
//贴图
ctrlDC->StretchBlt(0, 0, rc.Width(), rc.Height(), bmDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
//清理
bmDC.DeleteDC();
在OnDestroy里清理工作
DeleteObject(m_hbm);
接下来就是想获取指向这幅位图的指针,如何操作呢,求具体方法! 展开
3个回答
展开全部
//选择图像
CDC bmDC;
bmDC.CreateCompatibleDC(ctrlDC);
bmDC.SelectObject(m_hbm);
//然后
CBitmap* pbit = bmDC.GetCurrentBitmap();
BITMAP bitmapInfo;
pbit->GetObject(sizeof(BITMAP),&bitmapInfo);
//你看看BITMAP bitmapInfo;里面的结构,你想要的东西都在里面了
//还是推荐你看看windows 程序设计里面的位图部分,非常详尽
CDC bmDC;
bmDC.CreateCompatibleDC(ctrlDC);
bmDC.SelectObject(m_hbm);
//然后
CBitmap* pbit = bmDC.GetCurrentBitmap();
BITMAP bitmapInfo;
pbit->GetObject(sizeof(BITMAP),&bitmapInfo);
//你看看BITMAP bitmapInfo;里面的结构,你想要的东西都在里面了
//还是推荐你看看windows 程序设计里面的位图部分,非常详尽
更多追问追答
追问
那如何获得指向该位图的第一个像素的指针呢
追答
。。你没看BITMAP bitmapInfo的结构吗
typedef struct tagBITMAP
{
LONG bmType;
LONG bmWidth;
LONG bmHeight;
LONG bmWidthBytes;
WORD bmPlanes;
WORD bmBitsPixel;
LPVOID bmBits;
} BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
bmBits就是那个指针,结构里还有这个指针指向的内存长度。。
你都得到了这个结构,不是什么·都有了吗,
不要这么死板啊。
展开全部
CDC类有个函数是把句柄转换为对象:FromHandle(HANDLE h)
如果你要设计到图像处理,就要去看看
BITMAPFILEHEADER
BITMAPINFO
RGBQUAD这些相关结构了
如果你要设计到图像处理,就要去看看
BITMAPFILEHEADER
BITMAPINFO
RGBQUAD这些相关结构了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
m_hbm 不是吗?
追问
不是的,我试过了啊
追答
图像能画出来不, ?应该就是,你看下是不是那 被你删除了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询