如何在基于同一个文档类的两个视图中提取数据

zzqiang04053080 2010-03-28 04:06:25
最近在做一个图像处理的程序,大致思路是:在一个MDI程序中打开两幅图像,即两个子窗口。我需要从两幅图像中获得他们的像素值,对像素值进行一些操作后,比如说将两幅图像的像素值进行相减,得到新的像素值。最后在第三个子窗口中将得到的新像素值进行输出,得到一幅新的图像。这个有点类似于图像的变化检测。
下面说一下我的思路:我创建了一个图像类(MyBmp),这个类的功能是获取一幅图像的数据(包括了像素值),然后我在文档类中定义了一个该类的对象,这样我就可以在文档类中处理该图像的数据了。



现在我遇到的问题是:
1.我要获得两幅图像的数据,可不可以在文档类中定义两个图像类(MyBmp)的对象,这样可以得到两幅图像的数据吗?
2.我需要创建第三幅图,而这第三幅图的数据(主要是像素值)怎么获得呢

本人刚学MFC不久,希望大家提供思路的时候能够附上一些代码。编程一开始都是从模仿开始的,我现在很需要大家的想法,谢谢了!
...全文
114 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
c372662316 2011-07-13
  • 打赏
  • 举报
回复
莫人解决下
c372662316 2011-07-13
  • 打赏
  • 举报
回复
怎莫弄啊,我明白lz意思,就是只有一个文档类,一个视图类,但打开了两幅图像,怎么分别获得两幅图像的像素,这里关键是两幅图,
wendy425 2010-03-29
  • 打赏
  • 举报
回复
"1.我要获得两幅图像的数据,可不可以在文档类中定义两个图像类(MyBmp)的对象,这样可以得到两幅图像的数据吗?"
这没什么不可以的,在View类里面用pDoc = GetDocument();之类的语句就可以获得Doc类里的数据啊。在MFC里,一份document可以对应多个View。也许你还是没有说清楚你第一个问题想做什么。
"2.我需要创建第三幅图,而这第三幅图的数据(主要是像素值)怎么获得呢"
你都获得了前两幅图的数据,第三幅还得不到?同样在Doc实例化一个对象,可以先把那些像素数据初始化为0,然后把前两个图的像素值的运算结果赋给第三幅图的像素值区域就行了。也许你还是没有说清楚。
kier2 2010-03-29
  • 打赏
  • 举报
回复
呵呵,对于多个视图的问题,比如2个视图,那么我们可以在App的类里面添加一个变量CView* m_pview;
然后在其中一个视图的OnInitialUpdate函数里面
CyourApp* pApp=(CCharCheckApp*)AfxGetApp();
pApp->m_pview=this;
这样APP类里面就有了这个视图的指针了,
然后在你需要的地方:(我是在CMainFrame里面)
CDlgView* dview=(CDlgView*)((CCharCheckApp *)AfxGetApp())->m_pview;
取得了这个视图的指针,那么要它的成员变量的值就可以了吧!
zzqiang04053080 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wendy425 的回复:]
"1.我要获得两幅图像的数据,可不可以在文档类中定义两个图像类(MyBmp)的对象,这样可以得到两幅图像的数据吗?"
这没什么不可以的,在View类里面用pDoc = GetDocument();之类的语句就可以获得Doc类里的数据啊。在MFC里,一份document可以对应多个View。也许你还是没有说清楚你第一个问题想做什么。
"2.我需要创建第三幅图,而这第三幅图的数据(主要是像素值)怎……
[/Quote]


呵呵 ,听了你的分析,有点惭愧。那我就在说一下。
对于第一个问题:
在MFC里,一份document可以对应多个View。如果我只需要一幅图的数据,那么只需要用一次GetDocument()就可以得到那幅图的数据。我现在不知道的是,如何用GetDocument()语句在一个自己定义的函数中同时得到两幅图的数据。 简单的来说,就是我太菜了,不知道在一档多视的情况下,如何将多个视图的数据关联起来。
对于第二个问题:
如果我已经获得了两幅图的数据,那么第三幅图的绘制的确可以解决了 ,这个当时没想清楚。

所以关键还是第一个问题吧,由于我现在缺少一档多视相关资料,所以很难有什么思路,希望你能不能提供一些相关资料,谢谢了!
zzqiang04053080 2010-03-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 an_bachelor 的回复:]
可以多个实例 像素可以用Gdiplus::Bitmap中的函数操作
http://msdn.microsoft.com/en-us/library/ms536290(VS.85).aspx
[/Quote]


对像素的操作我有一些了解,关于多个实例可以详细讲解一下吗
an_bachelor 2010-03-28
  • 打赏
  • 举报
回复
可以多个实例 像素可以用Gdiplus::Bitmap中的函数操作
http://msdn.microsoft.com/en-us/library/ms536290(VS.85).aspx
zzqiang04053080 2010-03-28
  • 打赏
  • 举报
回复
难道就没人回复吗 哎 自己顶一下

19,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧