www.pudn.com > NoiseEstimate.rar > HistShow.cpp


// HistShow.cpp : 实现文件 
// 
 
#include "stdafx.h" 
#include "NoiseEstimate.h" 
#include "HistShow.h" 
 
 
// CHistShow 对话框 
 
IMPLEMENT_DYNAMIC(CHistShow, CDialog) 
 
CHistShow::CHistShow(CWnd* pParent /*=NULL*/,DWORD* imgHist ) 
	: CDialog(CHistShow::IDD, pParent) 
{ 
	hist = imgHist; 
} 
 
CHistShow::~CHistShow() 
{ 
} 
 
void CHistShow::DoDataExchange(CDataExchange* pDX) 
{ 
	CDialog::DoDataExchange(pDX); 
} 
 
 
BEGIN_MESSAGE_MAP(CHistShow, CDialog) 
	ON_WM_PAINT() 
END_MESSAGE_MAP() 
 
 
// CHistShow 消息处理程序 
 
void CHistShow::OnPaint() 
{ 
	CPaintDC dc(this); // device context for painting 
	// TODO: 在此处添加消息处理程序代码 
	// 不为绘图消息调用 CDialog::OnPaint() 
	 
	CClientDC *pDC=new CClientDC(this); 
	int i; 
 
	pDC->Rectangle(40, 0, 350, 300); 
 
	// 创建画笔对象 
	CPen* pPenRed = new CPen; 
 
	// 创建红色画笔(用于绘制坐标轴) 
	pPenRed->CreatePen(PS_SOLID, 1, RGB(255,100,100)); 
 
	// 选入红色画笔,并保存以前的画笔 
	CPen* pOldPen = pDC->SelectObject(pPenRed); 
 
	// 绘制坐标轴 
	//pDC->MoveTo(60,0); 
	pDC->MoveTo(60,280); 
 
	// 绘制垂直轴 
	//pDC->LineTo(60, 280); 
 
	// 绘制水平轴 
	pDC->LineTo(315, 280); 
 
	// 绘制X轴刻度值 
	CString s; 
	s.Format("0"); 
	pDC->TextOut(60, 283, s); 
	s.Format("50"); 
	pDC->TextOut(110, 283, s); 
	s.Format("100"); 
	pDC->TextOut(160, 283, s); 
	s.Format("150"); 
	pDC->TextOut(210, 283, s); 
	s.Format("200"); 
	pDC->TextOut(260, 283, s); 
	s.Format("255"); 
	pDC->TextOut(315, 283, s); 
 
	// 绘制X轴刻度 
	for (i = 0; i < 256; i += 5) 
	{ 
		if ((i & 1) == 0) 
		{ 
			// 10的倍数 
			pDC->MoveTo(i + 60, 280); 
			pDC->LineTo(i + 60, 284); 
		} 
		else 
		{ 
			// 5的奇数倍数 
			pDC->MoveTo(i + 60, 280); 
			pDC->LineTo(i + 60, 282); 
		} 
	} 
 
	// 绘制X轴箭头 
	//pDC->MoveTo(320,280); 
	//pDC->LineTo(315,275); 
	//pDC->MoveTo(320,280); 
	//pDC->LineTo(315,285); 
 
	// 绘制Y轴箭头 
	//pDC->MoveTo(60,0); 
	//pDC->LineTo(55,5); 
	//pDC->MoveTo(60,0); 
	//pDC->LineTo(65,5); 
 
	// 声名画笔对象 
	CPen* pPenbue = new CPen; 
 
	// 创建蓝色画笔(用于绘制直方图) 
	pPenbue->CreatePen(PS_SOLID, 1, RGB(100,100,255)); 
 
	// 选入蓝色画笔 
	pDC->SelectObject(pPenbue); 
 
	// 绘制直方图 
	for (i = 0; i <=255; i ++) 
	{ 
		pDC->MoveTo(i + 60, 280); 
		pDC->LineTo(i + 60, 281 - hist[i]); 
 
	} 
 
	// 恢复以前的画笔 
	pDC->SelectObject(pOldPen);	 
 
	// 删除新的画笔 
	delete pPenRed; 
	delete pPenbue; 
}