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 &amt; 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;
}