📄 pagecam.cpp
字号:
// PageCam.cpp : implementation file
//
#include "stdafx.h"
#include "UsbCam.h"
#include "PageCam.h"
#include "Utils.h"
#include "Image.h"
#include "DlgRGBChan.h"
#include "SheetCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPageCam property page
IMPLEMENT_DYNCREATE(CPageCam, CPropertyPage)
CPageCam::CPageCam() : CPropertyPage(CPageCam::IDD)
{
//{{AFX_DATA_INIT(CPageCam)
m_filename = _T("");
m_chk_auto_inc = FALSE;
m_chk_bright = FALSE;
m_chk_hue = FALSE;
m_chk_filter = FALSE;
m_s_cyan = 0;
m_s_contrast = 0;
m_s_expo = 0;
m_s_bright = 0;
m_s_light = 0;
m_s_saturation = 0;
m_s_video = 0;
m_s_yel = 0;
m_chk_mirror = FALSE;
m_chk_flip = FALSE;
m_edit_filename = _T("");
m_chk_smart = FALSE;
//}}AFX_DATA_INIT
m_pCurImg = new CImage (10,10,3);
}
CPageCam::~CPageCam()
{
}
void CPageCam::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPageCam)
DDX_Control(pDX, IDC_SLIDER_YELBLUE, m_slider_yel);
DDX_Control(pDX, IDC_SLIDER_VIDEO_QUALITY, m_slider_video);
DDX_Control(pDX, IDC_SLIDER_SATURATION, m_slider_saturation);
DDX_Control(pDX, IDC_SLIDER_LIGHTSENS, m_slider_light);
DDX_Control(pDX, IDC_SLIDER_EXPOTIME, m_slider_expo);
DDX_Control(pDX, IDC_SLIDER_CYANRED, m_slider_cyan);
DDX_Control(pDX, IDC_SLIDER_CONTRAST, m_slider_contrast);
DDX_Control(pDX, IDC_SLIDER_BRIGHTNESS, m_slider_bright);
DDX_Control(pDX, IDC_BUTTON_ENABLE_VIDEO, m_but_enable);
DDX_Control(pDX, IDC_QCVIDEOXCTRL, m_VideoFrame);
DDX_Text(pDX, IDC_EDIT_FILENAME, m_filename);
DDX_Check(pDX, IDC_CHECK_AUTO_INC, m_chk_auto_inc);
DDX_Check(pDX, IDC_CHECK_AUTO_BRIGHTNESS, m_chk_bright);
DDX_Check(pDX, IDC_CHECK_AUTO_HUE, m_chk_hue);
DDX_Check(pDX, IDC_CHECK_LOW_LIGHT, m_chk_filter);
DDX_Text(pDX, IDC_EDIT_CIAND_RED, m_s_cyan);
DDV_MinMaxInt(pDX, m_s_cyan, 0, 255);
DDX_Text(pDX, IDC_EDIT_CONTRAST, m_s_contrast);
DDV_MinMaxInt(pDX, m_s_contrast, 0, 255);
DDX_Text(pDX, IDC_EDIT_EXPO_TIME, m_s_expo);
DDV_MinMaxInt(pDX, m_s_expo, 0, 255);
DDX_Text(pDX, IDC_EDIT_BRIGHTNESS, m_s_bright);
DDV_MinMaxInt(pDX, m_s_bright, 0, 255);
DDX_Text(pDX, IDC_EDIT_LIGHT_SENS, m_s_light);
DDV_MinMaxInt(pDX, m_s_light, 0, 255);
DDX_Text(pDX, IDC_EDIT_SATURATION, m_s_saturation);
DDV_MinMaxInt(pDX, m_s_saturation, 0, 255);
DDX_Text(pDX, IDC_EDIT_VIDEO_QUAL, m_s_video);
DDV_MinMaxInt(pDX, m_s_video, 0, 4);
DDX_Text(pDX, IDC_EDIT_YEL_BLUE, m_s_yel);
DDV_MinMaxInt(pDX, m_s_yel, 0, 255);
DDX_Check(pDX, IDC_CHECK_MIRROR, m_chk_mirror);
DDX_Check(pDX, IDC_CHECK_FLIP, m_chk_flip);
DDX_Text(pDX, IDC_STATIC_FILENAME, m_edit_filename);
DDX_Check(pDX, IDC_CHECK_PICTURE_SMART, m_chk_smart);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPageCam, CPropertyPage)
//{{AFX_MSG_MAP(CPageCam)
ON_BN_CLICKED(IDC_BUTTON_ENABLE_VIDEO, OnButtonEnableVideo)
ON_BN_CLICKED(IDC_BUTTON_DIM, OnButtonDim)
ON_BN_CLICKED(IDC_BUTTON_TAKE_PICTURE, OnButtonTakePicture)
ON_BN_CLICKED(IDC_CHECK_AUTO_INC, OnCheckAutoInc)
ON_BN_CLICKED(IDC_BUTTON_SETTINGS, OnButtonSettings)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_CHECK_AUTO_HUE, OnCheckAutoHue)
ON_EN_CHANGE(IDC_EDIT_CIAND_RED, OnChangeEditCiandRed)
ON_EN_CHANGE(IDC_EDIT_YEL_BLUE, OnChangeEditYelBlue)
ON_EN_CHANGE(IDC_EDIT_CONTRAST, OnChangeEditContrast)
ON_EN_CHANGE(IDC_EDIT_EXPO_TIME, OnChangeEditExpoTime)
ON_EN_CHANGE(IDC_EDIT_FILENAME, OnChangeEditFilename)
ON_EN_CHANGE(IDC_EDIT_LIGHT_SENS, OnChangeEditLightSens)
ON_EN_CHANGE(IDC_EDIT_SATURATION, OnChangeEditSaturation)
ON_EN_CHANGE(IDC_EDIT_VIDEO_QUAL, OnChangeEditVideoQual)
ON_EN_CHANGE(IDC_EDIT_BRIGHTNESS, OnChangeEditBrightness)
ON_BN_CLICKED(IDC_BUTTON_DEFAULT, OnButtonDefault)
ON_BN_CLICKED(IDC_CHECK_AUTO_BRIGHTNESS, OnCheckAutoBrightness)
ON_BN_CLICKED(IDC_CHECK_LOW_LIGHT, OnCheckLowLight)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_CHECK_MIRROR, OnCheckMirror)
ON_BN_CLICKED(IDC_CHECK_FLIP, OnCheckFlip)
ON_BN_CLICKED(IDC_BUTTON_DISPLAY_PICTURE, OnButtonDisplayPicture)
ON_BN_CLICKED(IDC_BUTTON_DISPLAY_CHANNELS, OnButtonDisplayChannels)
ON_BN_CLICKED(IDC_CHECK_PICTURE_SMART, OnCheckPictureSmart)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPageCam message handlers
BOOL CPageCam::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_pict_count = 0;
// Initialization of m_dc
m_dc = new CClientDC(this);
// Restore defaults
Read_Registry();
// Assign pointers on sliders
pslider_cyan = GetDlgItem(IDC_SLIDER_CYANRED);
pslider_yel = GetDlgItem(IDC_SLIDER_YELBLUE);
pslider_saturation = GetDlgItem(IDC_SLIDER_SATURATION);
pslider_bright = GetDlgItem(IDC_SLIDER_BRIGHTNESS);
pslider_contrast = GetDlgItem(IDC_SLIDER_CONTRAST);
pslider_expo = GetDlgItem(IDC_SLIDER_EXPOTIME);
pslider_light = GetDlgItem(IDC_SLIDER_LIGHTSENS);
pslider_video = GetDlgItem(IDC_SLIDER_VIDEO_QUALITY);
// Write default values
m_VideoFrame.UnInitialization();
if (m_VideoFrame.Initialization (0)) m_bInit = TRUE;
else m_bInit = FALSE;
Sleep (200);
m_VideoFrame.SetColorMode ((short) m_chk_hue);
if (m_chk_hue)
{
if (!SetTimer (TIMER_HUE,INTERVAL,NULL)) AfxMessageBox (COULD_NOT_START_UP_TIMER);
}
m_VideoFrame.SetBrightnessMode ((short) m_chk_bright);
if (m_chk_bright)
{
if (!SetTimer (TIMER_BRIGHT,INTERVAL,NULL)) AfxMessageBox (COULD_NOT_START_UP_TIMER);
}
if ((m_chk_mirror) && (!m_chk_flip)) m_VideoFrame.SetOrientation (1);
if ((m_chk_mirror) && (m_chk_flip)) m_VideoFrame.SetOrientation (3);
if ((!m_chk_mirror) && (!m_chk_flip)) m_VideoFrame.SetOrientation (0);
if ((!m_chk_mirror) && (m_chk_flip)) m_VideoFrame.SetOrientation (2);
m_VideoFrame.SetLowLightFilter (m_chk_filter);
m_VideoFrame.SetCyanRedColor (m_s_cyan);
m_VideoFrame.SetYellowBlueColor (m_s_yel);
m_VideoFrame.SetSaturation (m_s_saturation);
m_VideoFrame.SetBrightnessMagnitude (m_s_bright);
m_VideoFrame.SetContrastMagnitude (m_s_contrast);
m_VideoFrame.SetExposure (m_s_expo);
m_VideoFrame.SetCompression (m_s_video);
m_VideoFrame.SetGain (m_s_light);
// Init the sliders
m_slider_bright.SetRangeMin (0,FALSE);
m_slider_bright.SetRangeMax (255,TRUE);
m_slider_bright.SetTicFreq(20);
m_slider_contrast.SetRangeMin (0,FALSE);
m_slider_contrast.SetRangeMax (255,TRUE);
m_slider_contrast.SetTicFreq(20);
m_slider_cyan.SetRangeMin (0,FALSE);
m_slider_cyan.SetRangeMax (255,TRUE);
m_slider_cyan.SetTicFreq(20);
m_slider_expo.SetRangeMin (0,FALSE);
m_slider_expo.SetRangeMax (255,TRUE);
m_slider_expo.SetTicFreq(20);
m_slider_light.SetRangeMin (0,FALSE);
m_slider_light.SetRangeMax (255,TRUE);
m_slider_light.SetTicFreq(20);
m_slider_saturation.SetRangeMin (0,FALSE);
m_slider_saturation.SetRangeMax (255,TRUE);
m_slider_saturation.SetTicFreq(20);
m_slider_video.SetRangeMin (0,FALSE);
m_slider_video.SetRangeMax (4,TRUE);
m_slider_video.SetPos (m_s_video);
m_slider_video.SetTicFreq(1);
m_slider_yel.SetRangeMin (0,FALSE);
m_slider_yel.SetRangeMax (255,TRUE);
m_slider_yel.SetTicFreq(20);
// Update groups and fields
UpdateAll();
m_filename = "Picture";
m_filename.Format ("%s%i", m_filename, m_pict_count);
UpdateData (FALSE);
// Enable or disable video
m_bLive = !m_bLive;
CPageCam::OnButtonEnableVideo();
UpdateData (FALSE);
return TRUE;
}
void CPageCam::OnDestroy()
{
CPropertyPage::OnDestroy();
m_VideoFrame.UnInitialization();
Store_Registry();
}
BOOL CPageCam::PreTranslateMessage(MSG* pMsg)
{
if ((pMsg->message == WM_LBUTTONUP) || (pMsg->message == WM_MOUSEMOVE))
{
CWnd* pfocus = GetFocus();
if (pslider_cyan == pfocus)
{
m_s_cyan = m_slider_cyan.GetPos();
m_VideoFrame.SetCyanRedColor (m_s_cyan);
UpdateData (FALSE);
}
else
if (pslider_yel == pfocus)
{
m_s_yel = m_slider_yel.GetPos();
m_VideoFrame.SetYellowBlueColor (m_s_yel);
UpdateData (FALSE);
}
else
if (pslider_saturation == pfocus)
{
m_s_saturation = m_slider_saturation.GetPos();
m_VideoFrame.SetSaturation (m_s_saturation);
UpdateData (FALSE);
}
else
if (pslider_bright == pfocus)
{
m_s_bright = m_slider_bright.GetPos();
m_VideoFrame.SetBrightnessMagnitude (m_s_bright);
UpdateData (FALSE);
}
else
if (pslider_contrast == pfocus)
{
m_s_contrast = m_slider_contrast.GetPos();
m_VideoFrame.SetContrastMagnitude (m_s_contrast);
UpdateData (FALSE);
}
else
if (pslider_expo == pfocus)
{
m_s_expo = m_slider_expo.GetPos();
m_VideoFrame.SetExposure (m_s_expo);
UpdateData (FALSE);
}
else
if (pslider_light == pfocus)
{
m_s_light = m_slider_light.GetPos();
m_VideoFrame.SetGain (m_s_light);
UpdateData (FALSE);
}
else
if (pslider_video == pfocus)
{
m_s_video = m_slider_video.GetPos();
m_VideoFrame.SetCompression (m_s_video);
UpdateData (FALSE);
}
}
return CPropertyPage::PreTranslateMessage(pMsg);
}
void CPageCam::OnTimer(UINT nIDEvent)
{
switch (nIDEvent)
{
case TIMER_HUE :
UpdateHueGroup();
break;
case TIMER_BRIGHT :
UpdateBrightGroup();
break;
default : break;
}
CPropertyPage::OnTimer(nIDEvent);
}
//*****************************************
//* Update procedures *
//*****************************************
void CPageCam::UpdateHueGroup()
{
short tmp;
UpdateData (TRUE);
m_VideoFrame.GetCyanRedColor (&m_s_cyan);
m_slider_cyan.SetPos (m_s_cyan);
m_VideoFrame.GetYellowBlueColor (&m_s_yel);
m_slider_yel.SetPos (m_s_yel);
m_VideoFrame.GetSaturation (&m_s_saturation);
m_slider_saturation.SetPos (m_s_saturation);
m_VideoFrame.GetColorMode (&tmp);
if (m_chk_hue = BOOL (tmp))
{
GetDlgItem(IDC_SLIDER_CYANRED)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER_YELBLUE)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_CIAND_RED)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_YEL_BLUE)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_SLIDER_CYANRED)->EnableWindow(TRUE);
GetDlgItem(IDC_SLIDER_YELBLUE)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_CIAND_RED)->EnableWindow(TRUE);
GetDlgItem(IDC_EDIT_YEL_BLUE)->EnableWindow(TRUE);
}
UpdateData (FALSE);
}
void CPageCam::UpdateBrightGroup()
{
short tmp;
UpdateData (TRUE);
m_VideoFrame.GetBrightnessMagnitude (&m_s_bright);
m_slider_bright.SetPos (m_s_bright);
m_VideoFrame.GetContrastMagnitude (&m_s_contrast);
m_slider_contrast.SetPos (m_s_contrast);
m_VideoFrame.GetExposure(&m_s_expo);
m_slider_expo.SetPos (m_s_expo);
m_VideoFrame.GetGain (&m_s_light);
m_slider_light.SetPos (m_s_light);
m_VideoFrame.GetBrightnessMode (&tmp);
if (m_chk_bright = BOOL (tmp))
{
GetDlgItem(IDC_SLIDER_BRIGHTNESS)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER_EXPOTIME)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_BRIGHTNESS)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_EXPO_TIME)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_LIGHT_SENS)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER_LIGHTSENS)->EnableWindow(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -