⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 histogramsdlg.cpp

📁 《医学图象的远程传输系统》
💻 CPP
字号:
// HistogramsDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ImgGrabProc.h"
#include "HistogramsDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// HistogramsDlg dialog


HistogramsDlg::HistogramsDlg(CWnd* pParent /*=NULL*/)
	: CDialog(HistogramsDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(HistogramsDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_orgPointR.x =50;
	m_orgPointR.y =170;
	m_orgPointG.x=50;
	m_orgPointG.y =370;
	m_orgPointB.x=50;
	m_orgPointB.y =570;

	for (int i=0;i<255;i++){
		m_nR[i]=0;
		m_nG[i]=0;
		m_nB[i]=0;
	}
}


void HistogramsDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(HistogramsDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(HistogramsDlg, CDialog)
	//{{AFX_MSG_MAP(HistogramsDlg)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// HistogramsDlg message handlers




void HistogramsDlg::OnPaint() 
{
	CPaintDC dc(this); // device context for painting

//draw red Histograms
	CPen m_Redpen;
	m_Redpen.CreatePen (PS_SOLID,1,RGB(255,0,0));

	DrawHistograms(m_orgPointR,m_nR,&dc,&m_Redpen);
//draw Green Histograms
	CPen m_Bluepen;
	m_Bluepen.CreatePen (PS_SOLID,1,RGB(0,255,0));
	DrawHistograms(m_orgPointG,m_nG,&dc,&m_Bluepen);
//draw blue Histograms
	CPen m_Greenpen;
	m_Greenpen.CreatePen (PS_SOLID,1,RGB(0,0,255));
	DrawHistograms(m_orgPointB,m_nB,&dc,&m_Greenpen);

	// Do not call CDialog::OnPaint() for painting messages
}

void HistogramsDlg::DrawHistograms(CPoint point, DWORD *nColor,CPaintDC* dc,CPen* pen)
{
	CPen m_Newpen;
	m_Newpen.CreatePen (PS_SOLID,2,RGB(0,0,0));
	dc->SelectObject (&m_Newpen);
	dc->MoveTo (point.x,point.y);
	dc->LineTo (point.x,point.y-150);
	dc->MoveTo (point.x,point.y);
	dc->LineTo (point.x +255,point.y);
	dc->SetBkMode (TRANSPARENT);
	dc->TextOut (point.x +253,point.y-8,">");
	dc->TextOut (point.x-3,point.y-158,"^");
	for (int i=0;i<=200;i=i+50){
		CString index;
		index.Format ("%d",i);
		dc->TextOut (point.x +i,point.y+5 ,index);
	}
	dc->TextOut (point.x +250,point.y +5,"255");
	dc->SelectObject (pen);
	DWORD RgbMax=nColor[0];
	for (i=1;i<255;i++){
		if (RgbMax<nColor[i]){
			RgbMax=nColor[i];
		}		
	}

	for (i=0;i<255;i++){
			dc->MoveTo (point.x+i,point.y-2);
			dc->LineTo (point.x+i,point.y-int(float(nColor[i])/(RgbMax+1)*150));
			//dc->LineTo (point.x+i,point.y-nColor[i]);
	}
	CString StrMax;
	StrMax.Format("%d",RgbMax);
	dc->TextOut(point.x,point.y-150,StrMax);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -