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

📄 pilty.cpp

📁 能实现图像的各种效果
💻 CPP
字号:
// pilty.cpp : implementation file
//

#include "stdafx.h"
#include "test.h"
#include "pilty.h"

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

/////////////////////////////////////////////////////////////////////////////
// Cpilty dialog


Cpilty::Cpilty(CWnd* pParent /*=NULL*/)
	: CDialog(Cpilty::IDD, pParent)
{
	//{{AFX_DATA_INIT(Cpilty)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_pBitmap=NULL;
}


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


BEGIN_MESSAGE_MAP(Cpilty, CDialog)
	//{{AFX_MSG_MAP(Cpilty)
	ON_BN_CLICKED(IDC_red, Onred)
	ON_BN_CLICKED(IDC_green, Ongreen)
	ON_BN_CLICKED(IDC_blue, Onblue)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Cpilty message handlers



void Cpilty::Onred() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	CClientDC dc(this);
	CPoint point(20,300);
	dc.LPtoDP(&point);
	dc.SetViewportOrg(point);
    dc.SetMapMode(MM_LOMETRIC);

	dc.TextOut(2,880,"255");
	dc.TextOut(0,0,"0");
	dc.TextOut(820,0,"255");
//	dc.SetMapMode(MM_TEXT);
//	dc.TextOut(520,500,"红色直方图");
//	dc.SetMapMode(MM_LOMETRIC);

	dc.MoveTo(0,0);
	dc.LineTo(0,900);
	dc.LineTo(-9,885);
	dc.MoveTo(0,900);
	dc.LineTo(9,885);

	dc.MoveTo(0,0);
	dc.LineTo(900,0);
	dc.LineTo(885,-9);
	dc.MoveTo(900,0);
	dc.LineTo(885,9);

	CPen pen(PS_SOLID,1,RGB(255,0,0));
	CPen *poldpen=dc.SelectObject(&pen);

	int array[256],x=0;
    int nWidth=m_pBitmap->m_pInfo->bmiHeader.biWidth;
    int nHeight=m_pBitmap->m_pInfo->bmiHeader.biHeight;
	int Bytes=WIDTHBYTE(nWidth*24);
	for(int i=0;i<256;i++)
		array[i]=0;
	for(i=0;i<nHeight;i++)
		for(int j=0;j<Bytes;j+=3)
		{
			array[m_pBitmap->m_pPixels[i*Bytes+j]]++;
		}

	for(i=0;i<256;i++)
	{
		dc.MoveTo(x,0);
		dc.LineTo(x,60000*array[i]/m_pBitmap->m_nPixels);
		x+=3;
	}

}

void Cpilty::Ongreen() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	CClientDC dc(this);
	CPoint point(200,300);
	dc.LPtoDP(&point);
	dc.SetViewportOrg(point);
    dc.SetMapMode(MM_LOMETRIC);

	dc.TextOut(2,880,"255");
	dc.TextOut(0,0,"0");
	dc.TextOut(820,0,"255");
//	dc.SetMapMode(MM_TEXT);
//	dc.TextOut(520,500,"红色直方图");
//	dc.SetMapMode(MM_LOMETRIC);

	dc.MoveTo(0,0);
	dc.LineTo(0,900);
	dc.LineTo(-9,885);
	dc.MoveTo(0,900);
	dc.LineTo(9,885);

	dc.MoveTo(0,0);
	dc.LineTo(900,0);
	dc.LineTo(885,-9);
	dc.MoveTo(900,0);
	dc.LineTo(885,9);

	CPen pen(PS_SOLID,1,RGB(0,255,0));
	CPen *poldpen=dc.SelectObject(&pen);

	int array[256],x=0;
    int nWidth=m_pBitmap->m_pInfo->bmiHeader.biWidth;
    int nHeight=m_pBitmap->m_pInfo->bmiHeader.biHeight;
	int Bytes=WIDTHBYTE(nWidth*24);
	for(int i=0;i<256;i++)
		array[i]=0;
	for(i=0;i<nHeight;i++)
		for(int j=0;j<Bytes;j+=3)
		{
			array[m_pBitmap->m_pPixels[i*Bytes+j+1]]++;
		}

	for(i=0;i<256;i++)
	{
		dc.MoveTo(x,0);
		dc.LineTo(x,60000*array[i]/m_pBitmap->m_nPixels);
		x+=3;
	}

}

void Cpilty::Onblue() 
{
	// TODO: Add your control notification handler code here
	// TODO: Add your control notification handler code here
	CClientDC dc(this);
	CPoint point(400,300);
	dc.LPtoDP(&point);
	dc.SetViewportOrg(point);
    dc.SetMapMode(MM_LOMETRIC);

	dc.TextOut(2,880,"255");
	dc.TextOut(0,0,"0");
	dc.TextOut(820,0,"255");
//	dc.SetMapMode(MM_TEXT);
//	dc.TextOut(520,500,"红色直方图");
//	dc.SetMapMode(MM_LOMETRIC);

	dc.MoveTo(0,0);
	dc.LineTo(0,900);
	dc.LineTo(-9,885);
	dc.MoveTo(0,900);
	dc.LineTo(9,885);

	dc.MoveTo(0,0);
	dc.LineTo(900,0);
	dc.LineTo(885,-9);
	dc.MoveTo(900,0);
	dc.LineTo(885,9);

	CPen pen(PS_SOLID,1,RGB(0,0,255));
	CPen *poldpen=dc.SelectObject(&pen);

	int array[256],x=0;
    int nWidth=m_pBitmap->m_pInfo->bmiHeader.biWidth;
    int nHeight=m_pBitmap->m_pInfo->bmiHeader.biHeight;
	int Bytes=WIDTHBYTE(nWidth*24);
	for(int i=0;i<256;i++)
		array[i]=0;
	for(i=0;i<nHeight;i++)
		for(int j=0;j<Bytes;j+=3)
		{
			array[m_pBitmap->m_pPixels[i*Bytes+j+2]]++;
		}

	for(i=0;i<256;i++)
	{
		dc.MoveTo(x,0);
		dc.LineTo(x,60000*array[i]/m_pBitmap->m_nPixels);
		x+=3;
	}

}

⌨️ 快捷键说明

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