在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);

接下来就是想获取指向这幅位图的指针,如何操作呢,求具体方法!
展开
 我来答
dut_wish
2011-03-10 · TA获得超过1634个赞
知道小有建树答主
回答量:301
采纳率:0%
帮助的人:504万
展开全部
//选择图像
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就是那个指针,结构里还有这个指针指向的内存长度。。

你都得到了这个结构,不是什么·都有了吗,

不要这么死板啊。
百度网友0dcd2b1f0
2011-03-10 · 超过16用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:48.3万
展开全部
CDC类有个函数是把句柄转换为对象:FromHandle(HANDLE h)
如果你要设计到图像处理,就要去看看
BITMAPFILEHEADER
BITMAPINFO
RGBQUAD这些相关结构了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
佐助boy
2011-03-10 · 超过67用户采纳过TA的回答
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:155万
展开全部
m_hbm 不是吗?
追问
不是的,我试过了啊
追答
图像能画出来不, ?应该就是,你看下是不是那 被你删除了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式