📄 useteeth.cpp
字号:
// UseTeeth.cpp: implementation of the CUseTeeth class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Teeth.h"
#include "UseTeeth.h"
#include "fstream.h"
#include "math.h"
#include "UseTeeth.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CUseTeeth m_teeth;
CUseTeeth::CUseTeeth()
{
m_bFlagHaveData = false;
m_lDataNum = 0;
}
CUseTeeth::~CUseTeeth()
{
}
void CUseTeeth::ReadBitMap()
{
CFileDialog fileDlg(true);
fileDlg.m_ofn.lpstrTitle ="选择bmp文件";
fileDlg.m_ofn.lpstrFilter = "Bitmap Files(*.bmp)\0*.bmp\0All Files(*.*)\0*.*\0\0";
fileDlg.m_ofn.Flags|=OFN_ALLOWMULTISELECT|OFN_CREATEPROMPT;//可以选择多个文件
fstream fileBmp;
BITMAPFILEHEADER bfHeader;//定义一个文件标题结构
BITMAPINFOHEADER biHeader;//定义一个信息标题结构
long boff;
if(IDOK == fileDlg.DoModal())//
{
CString sPathName,sDestName;
POSITION pos=fileDlg.GetStartPosition();
while(pos)
{
m_lDataNum = 0;//将目标象素点的个数置0,为了多次读取文件
sPathName = fileDlg.GetNextPathName(pos);
fileBmp.open(sPathName, ios::in|ios::binary|ios::nocreate);
fileBmp.read((signed char*)&bfHeader,sizeof(bfHeader));
boff = bfHeader.bfOffBits;//头文件的长度,文件从开始到实际位图起点的字节偏移量
//bfHeader.
fileBmp.read((signed char*)&biHeader,sizeof(biHeader));
long BitCount=biHeader.biBitCount;
for(int i=0; i< nRowSize; i++)
{
for(int j=0; j< nColumnSize; j++)
{
fileBmp.read((unsigned char *)&m_nMapColor[i][j],sizeof(m_nMapColor[i][j]));
//限定灰度范围
if (m_nMapColor[i][j].rgbRed >nCtrlColor &&
m_nMapColor[i][j].rgbGreen ==m_nMapColor[i][j].rgbBlue &&
m_nMapColor[i][j].rgbBlue==m_nMapColor[i][j].rgbRed)
{
m_sCoordinate[m_lDataNum].dX = j * dCellSize;
m_sCoordinate[m_lDataNum].dY = i * dCellSize;
m_lDataNum++;
}
}
}
m_bFlagHaveData = true;//数组中已经有数据
fileBmp.close();
sDestName=sPathName.Mid(0);
while(-1!=sDestName.Find("\\"))
{
sDestName=sDestName.Mid(sDestName.Find("\\")+1);
};
sDestName=sDestName.Left(sDestName.Find('.'));
WriteData(sDestName);
}
}
}
void CUseTeeth::WriteData()
{
CFileDialog fileDlg(FALSE);
fileDlg.m_ofn.lpstrTitle="文件保存对话框";
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
fileDlg.m_ofn.lpstrDefExt="txt";
if(IDOK==fileDlg.DoModal())
{
CStdioFile file(fileDlg.GetFileName(),CFile::modeCreate | CFile::modeWrite);
char* strData=new char[100];
long i=0;
while(i < m_lDataNum)
{
// memset(strData,0,100);
//将数据连接称一个字符串,格式为:x值 退格 y值 换行// \t为table,\n为换行
sprintf(strData, "%lf%s%lf%s", m_sCoordinate[i].dX, "\t", m_sCoordinate[i].dY,"\n");
file.WriteString(strData);
i++;
}
m_bFlagHaveData = false;
file.Close();
}
}
void CUseTeeth::WriteData(const CString dataName)
{
CString strName = dataName + ".txt";
CStdioFile file(strName,CFile::modeCreate | CFile::modeWrite);
char* strData=new char[100];
long i=0;
while(i < m_lDataNum)
{
//将数据连接称一个字符串,格式为:x值 退格 y值 换行// \t为table,\n为换行
sprintf(strData, "%lf%s%lf%s", m_sCoordinate[i].dX, "\t", m_sCoordinate[i].dY,"\n");
file.WriteString(strData);
i++;
}
m_bFlagHaveData = false;
file.Close();
}
void CUseTeeth::DrawBitmap(long nNumber,CDC *pDC)
{
long nNum = 0;
int rare = 1;
while (nNum < nNumber)
{
// if(nNum%4==0)
pDC->SetPixel((int)(m_sCoordinate[nNum].dX * rare), (int)(m_sCoordinate[nNum].dY * rare),RGB(0,0,0));
nNum++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -