www.pudn.com > ImageSearch.rar > ImageSearchView.cpp


// ImageSearchView.cpp : CImageSearchView 类的实现 
 
#include "stdafx.h" 
#include "ImageSearch.h" 
 
#include "ImageSearchDoc.h" 
#include "ImageSearchView.h" 
#include ".\imagesearchview.h" 
#include "math.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif 
 
 
// CImageSearchView 
 
IMPLEMENT_DYNCREATE(CImageSearchView, CFormView) 
 
BEGIN_MESSAGE_MAP(CImageSearchView, CFormView) 
END_MESSAGE_MAP() 
 
// CImageSearchView 构造/析构 
 
CImageSearchView::CImageSearchView() 
	: CFormView(CImageSearchView::IDD) 
{ 
	// TODO: 在此处添加构造代码 
 
} 
 
CImageSearchView::~CImageSearchView() 
{ 
} 
 
void CImageSearchView::DoDataExchange(CDataExchange* pDX) 
{ 
	CFormView::DoDataExchange(pDX); 
} 
 
BOOL CImageSearchView::PreCreateWindow(CREATESTRUCT& cs) 
{ 
	// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或 
	// 样式 
 
	return CFormView::PreCreateWindow(cs); 
} 
 
void CImageSearchView::OnInitialUpdate() 
{ 
	CFormView::OnInitialUpdate(); 
	GetParentFrame()->RecalcLayout(); 
	ResizeParentToFit(); 
	GetDocument()->SetTitle("媒体计算课程作业"); 
} 
 
// CImageSearchView 诊断 
 
#ifdef _DEBUG 
void CImageSearchView::AssertValid() const 
{ 
	CFormView::AssertValid(); 
} 
 
void CImageSearchView::Dump(CDumpContext& dc) const 
{ 
	CFormView::Dump(dc); 
} 
 
CImageSearchDoc* CImageSearchView::GetDocument() const // 非调试版本是内联的 
{ 
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CImageSearchDoc))); 
	return (CImageSearchDoc*)m_pDocument; 
} 
#endif //_DEBUG 
 
void CImageSearchView::OnDraw(CDC* pDC) 
{ 
	// TODO: 在此添加专用代码和/或调用基类 
	CImageSearchDoc* pDoc = GetDocument(); 
	ASSERT_VALID(pDoc); 
 
	CString FileName; 
	if(pDoc->m_strQueryFile.IsEmpty()) 
	{ 
     	pDC->TextOut(100, 10, "                      ",20 ); 
		return; 
	} 
 
	pDoc->m_dibQuery.Draw(pDC,5,5,1); 
   	pDC->TextOut( 100,160, "原始图像                    ",20 ); 
 
 
	if(pDoc->fileopen==1&&pDoc->m_iShowQueryResult==1) 
	{ 
		BYTE* pBits; 
		int i, j, k; 
		int b, g, r; 
		int iWidth, iHeight, iAddWidth; 
		double r_hgram1[256] = {0}; 
		double g_hgram1[256] = {0}; 
		double b_hgram1[256] = {0}; 
 
		 
		for (i=0; i<=255; i++) 
		{ 
			r_hgram1[i] = 0; 
			g_hgram1[i] = 0; 
			b_hgram1[i] = 0; 
		} 
 
 
		pBits		= pDoc->m_dibQuery.GetBits(); 
		iWidth		= pDoc->m_dibQuery.GetWidth(); 
		iHeight		= pDoc->m_dibQuery.GetHeight(); 
		iAddWidth	= pDoc->m_dibQuery.GetAddWidth(); 
 
		for (i=0; i matchdegree[i] ) 
			{ 
				     iBestDistance = matchdegree[i]; 
				     result[0] = i; 
			}	 
		} 
		 
 
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[1] = 0; 
		for (i=0; i matchdegree[i] ) 
			{ 
				iBestDistance = matchdegree[i]; 
				result[1] = i; 
			} 
		} 
		 
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[2] = 0; 
		for (i=0; i matchdegree[i] ) 
			{         
 
				iBestDistance = matchdegree[i]; 
				result[2] = i; 
			} 
		} 
 
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[3] = 0; 
		for (i=0; i matchdegree[i] ) 
			{ 
				iBestDistance = matchdegree[i]; 
				result[3] = i; 
			} 
		} 
 
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[4] = 0; 
		for (i=0; i matchdegree[i] ) 
			{ 
				iBestDistance = matchdegree[i]; 
				result[4] = i; 
			} 
		} 
 
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[5] = 0; 
		for (i=0; i matchdegree[i] ) 
			{ 
				iBestDistance = matchdegree[i]; 
				result[5] = i; 
			} 
		} 
 
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[6] = 0; 
		for (i=0; i matchdegree[i] ) 
			{ 
				iBestDistance = matchdegree[i]; 
				result[6] = i; 
			} 
		} 
         
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[7] = 0; 
		for (i=0; i matchdegree[i] ) 
			{ 
				iBestDistance = matchdegree[i]; 
				result[7] = i; 
				 
			} 
		} 
 
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[8] = 0; 
		for (i=0; i matchdegree[i] ) 
			{ 
				iBestDistance = matchdegree[i]; 
				result[8] = i; 
				 
			} 
		} 
 
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[9] = 0; 
		for (i=0; i matchdegree[i] ) 
			{ 
				iBestDistance = matchdegree[i]; 
				result[9] = i; 
				 
			} 
		} 
 
		iBestDistance = (unsigned long)pow(2, 32) - 1; 
		result[10] = 0; 
		for (i=0; i matchdegree[i] ) 
			{ 
				iBestDistance = matchdegree[i]; 
				result[10] = i; 
				 
			} 
		} 
	 
		pDC->TextOut(495, 160, " 第一幅图                     ",20 ); 
		fpTemp.Open( cBmpName[result[0]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,400,10,1); 
         
		pDC->TextOut(890, 160, " 第二幅图                     ",20 ); 
		fpTemp.Open( cBmpName[result[1]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,795,10,1); 
 
		pDC->TextOut(100, 350 ," 第三幅图                     ",20 );  
		fpTemp.Open( cBmpName[result[2]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,5,200,1); 
 
		pDC->TextOut(495, 350 ," 第四幅图                     ",20 );  
		fpTemp.Open( cBmpName[result[3]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,400,200,1); 
 
		pDC->TextOut(890, 350," 第五幅图                     ",20 ); 	 
		fpTemp.Open( cBmpName[result[4]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,795,200,1); 
 
		pDC->TextOut(100, 545," 第六幅图                     ",20 ); 	 
		fpTemp.Open( cBmpName[result[5]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,5,395,1); 
 
		pDC->TextOut(495, 545," 第七幅图                     ",20 ); 	 
		fpTemp.Open( cBmpName[result[6]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,400,395,1); 
 
		pDC->TextOut(890, 545," 第八幅图                     ",20 ); 	 
		fpTemp.Open( cBmpName[result[7]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,795,395,1); 
 
		pDC->TextOut(100, 740," 第九幅图                     ",20 ); 	 
		fpTemp.Open( cBmpName[result[8]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,5,590,1); 
 
		pDC->TextOut(495, 740," 第十幅图                     ",20 ); 	 
		fpTemp.Open( cBmpName[result[9]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,400,590,1); 
 
		pDC->TextOut(890, 740," 第十一幅图                     ",20 ); 	 
		fpTemp.Open( cBmpName[result[10]], CFile::modeRead ); 
		dibTemp.Load( &fpTemp ); 
		fpTemp.Close(); 
		dibTemp.Draw(pDC,795,590,1); 
	} 
}