浅谈用VC6.0单文档进行数字图像处理(1)
来源:互联网 发布:黑龙江网页关键词优化 编辑:程序博客网 时间:2024/06/05 15:40
以前写一些VC6.0的数字图像处理程序,大多是用对话框写的。主要是因为对话框就那么两个类:App类和Dlg类,所以理解也比较简单。但是,最近,听到有人这么讲文档视图类才是MFC的核心。所以,也想尝试一下。这两天做了点简单的尝试,特此总结一下。
1、写一个DIB类,因为在单文档或多文档下,如果不写一个DIB类,那么你做处理就比较麻烦了。因为我们经常要将这个DIB类的对象来共享,比如一般的DIB类的对象都是放到Doc类中。那么我们经常要在View类和MainFrame类中引用到Doc类的Dib类的实例。如果是多个Doc类和View类,这种数据的共享就显得更加重要了。
2、在DIB类中要有一个获得图像像素数据的指针的函数和一个能够设置DIB类的像素数据的指针。因为,在MainFrame类中我们需要获得Doc类的一个DIB类的对象之后,可以获得指向该对象的像素数据的指针,因为我们要对其中的像素数据进行操作。另外,我们要将操作之后的像素数据拷贝进DIB类的对象的像素数据中。
3、DIB类中还需要有获得操作像素数据中要用到的函数:获得图像高度、获得图像宽度、获得图像位数、获得图像每行像素所占的字节数。
4、DIB类中当然还需要有读入和写出图像的函数。
5、由于菜单的响应函数都是在MainFrame类中,所以,我们需要在MainFrame类中获得Doc类和View类的指针。获得Doc类的指针主要是利用其中的DIB类的对象;获得View类的指针主要是更新显示处理后的图像效果。所以在MainFrame类的cpp文件的包含文件中要包含Doc类和View类的h文件。获得方法是调用MainFrame类的GetActiveDoc()和GetActiveView()函数。
好了,下面说说主要的程序:
// Dib.h: interface for the CDib class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_DIB_H__1065C5DA_1C47_464F_A225_AAF8D2F15064__INCLUDED_)
#define AFX_DIB_H__1065C5DA_1C47_464F_A225_AAF8D2F15064__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CDib
{
public:
private:
public:
public:
public:
};
#endif // !defined(AFX_DIB_H__1065C5DA_1C47_464F_A225_AAF8D2F15064__INCLUDED_)
DIB类的cpp文件:
// Dib.cpp: implementation of the CDib class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "VampireImage.h"
#include "Dib.h"//包含DIB类的头文件
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDib::CDib()
{
}
CDib::~CDib()
{
}
//////////////////////////////////////////////////////////////////////
// Methods
//////////////////////////////////////////////////////////////////////
int CDib::Read(CString filename)
{
}
int CDib::Write(CString filename)
{
}
void CDib::Draw(CDC *pDC)
{
}
//////////////////////////////////////////////////////////////////////
// Get/Set Functions
//////////////////////////////////////////////////////////////////////
WORD CDib::GetBitCount() const
{
}
DWORD CDib::GetWidth() const
{
}
DWORD CDib::GetHeight() const
{
}
DWORD CDib::GetLineBytes() const
{
}
BYTE* CDib::GetPixelPointer() const
{
}
void CDib::SetPixelMatrix(BYTE *newPixel)
{
}
View类中的OnDraw函数:
void CVampireImageView::OnDraw(CDC* pDC)
{
}
Doc类中的获得DIB类的对象的指针的函数:
CDib* CVampireImageDoc::GetDibInstance()
{
}
Doc类中的打开和保存菜单的函数:
BOOL CVampireImageDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
}
CDib* CVampireImageDoc::GetDibInstance()
{
}
BOOL CVampireImageDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
;
}
MainFrame类中灰度图菜单的响应函数:
void CMainFrame::OnGrayimage()
{
}
- 浅谈用VC6.0单文档进行数字图像处理(1)
- 浅谈用VC6.0单文档进行数字图像处理(上)
- 浅谈用VC6.0单文档进行数字图像处理(下)
- 浅谈C++ Builder6.0进行数字图像处理
- 浅谈用C语言进行数字图像处理
- 浅谈用Java进行数字图像处理
- 浅谈Linux下用C语言进行数字图像处理
- 【数字图像处理】 二.MFC单文档分割窗口显示图片
- VC6.0用单文档调用对话框绘图
- 数字图像处理——用Java对数字图像进行读写
- VC6.0之MFC 单文档操作
- 数字图象处理之浅谈数字图像处理
- 使用Python进行数字图像处理
- VC6.0中,用MFC的单文档,写的[拼图游戏]----自我解析
- vc6.0 MFC 单文档 静态分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- vc6.0 MFC 单文档 静态分割窗口
- c++ 虚函数的实现机制
- tomcat启动45秒问题
- 生活常识之早起
- N8:自己动手给vim语法增色
- 也谈C++中char*与wchar_t*之间的转换
- 浅谈用VC6.0单文档进行数字图像处理(1)
- 软件工程 敏捷的酒后问答
- 4_16_天天一记
- 隐藏TD 时,出现行变粗的问题。
- 腾讯产品群面总结
- 使用命令模式,告别if-else
- Android程序的隐藏与退出
- windows下不错的ftp下软件(绿色版)
- 第四篇感想