📄 dlgrgbchan.cpp
字号:
// DlgRGBChan.cpp : implementation file
//
#include "stdafx.h"
#include "USBCam.h"
#include "DlgRGBChan.h"
#include "Utils.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgRGBChan dialog
/*CDlgRGBChan::CDlgRGBChan(CWnd* pParent )
: CDialog(CDlgRGBChan::IDD, pParent)
{
}*/
CDlgRGBChan::CDlgRGBChan(CWnd* pParent, CImage *src)
: CDialog(CDlgRGBChan::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgRGBChan)
m_radio_chan = 0;
//}}AFX_DATA_INIT
pSrc = src;
pImgR = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
pImgG = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
pImgB = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
pImgBW = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
pImgHSI = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
pTemp = new CImage (src->pHead->biWidth,src->pHead->biHeight,RGB_3BYTES);
src->ExtractChannel (pImgR, RED_CHANNEL);
src->ExtractChannel (pImgG, GREEN_CHANNEL);
src->ExtractChannel (pImgB, BLUE_CHANNEL);
src->ExtractChannel (pImgBW, GRAY_CHANNEL);
src->HSI_Values (pImgHSI);
}
void CDlgRGBChan::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgRGBChan)
DDX_Radio(pDX, IDC_RADIO_RED, m_radio_chan);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgRGBChan, CDialog)
//{{AFX_MSG_MAP(CDlgRGBChan)
ON_BN_CLICKED(IDC_RADIO_RED, OnRadioRed)
ON_BN_CLICKED(IDC_RADIO_GREEN, OnRadioGreen)
ON_BN_CLICKED(IDC_RADIO_BLUE, OnRadioBlue)
ON_BN_CLICKED(IDC_RADIO_GRAY, OnRadioGray)
ON_WM_PAINT()
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_RADIO_HUE, OnRadioHue)
ON_BN_CLICKED(IDC_RADIO_INTENSITY, OnRadioIntensity)
ON_BN_CLICKED(IDC_RADIO_SATURATION, OnRadioSaturation)
ON_BN_CLICKED(IDC_RADIO_SOURCE, OnRadioSource)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgRGBChan message handlers
void CDlgRGBChan::OnPaint()
{
CPaintDC dc(this); // device context for painting
CClientDC dcd (this);
UpdateData (TRUE);
switch (m_radio_chan)
{
case 0 :
pImgR->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
break;
case 1 :
pImgG->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
break;
case 2 :
pImgB->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
break;
case 3 :
pImgBW->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
break;
case 4 :
pImgHSI->ExtractChannel (pTemp, HUE_CHANNEL);
pTemp->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
break;
case 5 :
pImgHSI->ExtractChannel (pTemp, SAT_CHANNEL);
pTemp->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
break;
case 6 :
pImgHSI->ExtractChannel (pTemp, INT_CHANNEL);
pTemp->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
break;
case 7 :
pSrc->DisplayImage (dcd.m_hDC,10,10,0,0,0,ALL_IMAGE,SRCCOPY);
break;
default : AfxMessageBox ("This channel doesn't exists !"); break;
}
}
void CDlgRGBChan::OnRadioRed()
{
m_radio_chan = 0;
UpdateData (FALSE);
CDlgRGBChan::OnPaint();
}
void CDlgRGBChan::OnRadioGreen()
{
m_radio_chan = 1;
UpdateData (FALSE);
CDlgRGBChan::OnPaint();
}
void CDlgRGBChan::OnRadioBlue()
{
m_radio_chan = 2;
UpdateData (FALSE);
CDlgRGBChan::OnPaint();
}
void CDlgRGBChan::OnRadioGray()
{
m_radio_chan = 3;
UpdateData (FALSE);
CDlgRGBChan::OnPaint();
}
void CDlgRGBChan::OnRadioHue()
{
m_radio_chan = 4;
UpdateData (FALSE);
CDlgRGBChan::OnPaint();
}
void CDlgRGBChan::OnRadioSaturation()
{
m_radio_chan = 5;
UpdateData (FALSE);
CDlgRGBChan::OnPaint();
}
void CDlgRGBChan::OnRadioIntensity()
{
m_radio_chan = 6;
UpdateData (FALSE);
CDlgRGBChan::OnPaint();
}
void CDlgRGBChan::OnRadioSource()
{
m_radio_chan = 7;
UpdateData (FALSE);
CDlgRGBChan::OnPaint();
}
void CDlgRGBChan::OnDestroy()
{
CDialog::OnDestroy();
delete pTemp;
delete pImgR;
delete pImgG;
delete pImgB;
delete pImgBW;
delete pImgHSI;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -