www.pudn.com > 图像处理源代码.rar > HView.cpp


// HView.cpp : implementation file 
// 
 
#include "stdafx.h" 
#include "tuxiang.h" 
#include "HView.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CHView dialog 
 
 
CHView::CHView(int* H,CWnd* pParent /*=NULL*/) 
	: CDialog(CHView::IDD, pParent) 
{ 
	Histo=H; 
	Create(CHView::IDD,pParent); 
	//{{AFX_DATA_INIT(CHView) 
		// NOTE: the ClassWizard will add member initialization here 
	//}}AFX_DATA_INIT 
} 
 
 
void CHView::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
	//{{AFX_DATA_MAP(CHView) 
		// NOTE: the ClassWizard will add DDX and DDV calls here 
	//}}AFX_DATA_MAP 
} 
 
 
BEGIN_MESSAGE_MAP(CHView, CDialog) 
	//{{AFX_MSG_MAP(CHView) 
		// NOTE: the ClassWizard will add message map macros here 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CHView message handlers 
BOOL CHView::DisplayHistogram() 
{ 
	RECT client; 
	SIZE clientsize; 
	POINT origin; 
 
	GetClientRect(&client); 
	clientsize.cx = client.right - client.left + 1; 
	clientsize.cy = client.bottom - client.top + 1; 
	origin.x = clientsize.cx /10; 
	origin.y = clientsize.cy *9/10; 
 
	int maxH=0;	//数组H中最大项 
	for(int x=0;x<256;x++) 
		if(Histo[x]>maxH) maxH=Histo[x]; 
	 
	int maxHeight=clientsize.cy *72/100; 
 
	CClientDC *dc=new CClientDC(this); 
	 
	HPEN pen=CreatePen(PS_SOLID,2,RGB(0,0,0)); 
	dc->SelectObject (pen); 
 
	dc->MoveTo (origin.x,origin.y); 
	dc->LineTo (origin.x,origin.y - clientsize.cy * 8 /10);  
 
	dc->MoveTo (origin.x,origin.y); 
	dc->LineTo (origin.x + clientsize.cx * 8 /10,origin.y);  
 
	dc->SetBkMode (TRANSPARENT); 
	dc->TextOut (origin.x - 5 ,origin.y + 5,"0"); 
 
	pen=CreatePen (PS_SOLID,1,RGB(0,0,255)); 
	dc->SelectObject (pen); 
 
	for(x=0;x<256;x++) 
	{ 
		dc->MoveTo (origin.x + 2*x + 1,origin.y -1); 
		dc->LineTo (origin.x + 2*x + 1,origin.y -1 - Histo[x]*maxHeight/maxH); 
	} 
 
	dc->MoveTo (origin.x + 2*x + 1,origin.y); 
	dc->LineTo (origin.x + 2*x + 1,origin.y + 10); 
	dc->TextOut (origin.x + 2*x + 1 -5 ,origin.y + 10 + 5,"255"); 
	return TRUE; 
}