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

📄 imagesizedialog.cpp

📁 可调节自适应滤波器-代码.rar
💻 CPP
字号:
// ImageSizeDialog.cpp : implementation file
//

#include "stdafx.h"
#include "Rader.h"
#include "ImageSizeDialog.h"

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

/////////////////////////////////////////////////////////////////////////////
// CImageSizeDialog dialog


CImageSizeDialog::CImageSizeDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CImageSizeDialog::IDD, pParent)
{
	dwFileLength = 0;
	m_dwImageSize = 0;
	NowPos = 1;
	pLarge = NULL;
	pSmall = NULL;

	//{{AFX_DATA_INIT(CImageSizeDialog)
	m_nBits = 0;
	m_dwHeight = 0;
	m_dwWidth = 0;
	m_FileSize = 0;
	//}}AFX_DATA_INIT
}

CImageSizeDialog::~CImageSizeDialog()
{
	if(NULL != pLarge)
		delete[] pLarge;
	if(NULL != pSmall)
		delete[] pSmall;
}

void CImageSizeDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CImageSizeDialog)
	DDX_CBIndex(pDX, IDC_COMBO_BITS, m_nBits);
	DDX_Text(pDX, IDC_HEIGHT, m_dwHeight);
	DDV_MinMaxDWord(pDX, m_dwHeight, 0, 999999);
	DDX_Text(pDX, IDC_WIDTH, m_dwWidth);
	DDV_MinMaxDWord(pDX, m_dwWidth, 0, 999999);
	DDX_Text(pDX, IDC_EDIT3, m_FileSize);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CImageSizeDialog, CDialog)
	//{{AFX_MSG_MAP(CImageSizeDialog)
		// NOTE: the ClassWizard will add message map macros here
		ON_BN_CLICKED(IDC_BUTTON_LARGE, OnButtonLarge)
		ON_BN_CLICKED(IDC_BUTTON_SMALL, OnButtonSmall)
		ON_CBN_CLOSEUP(IDC_COMBO_BITS, OnCloseupCombo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CImageSizeDialog message handlers
BOOL CImageSizeDialog::OnInitDialog() 
{
	CDialog::OnInitDialog();

	switch(sizeof(UNDATA))
	{
	case sizeof(BYTE):
		m_nBits = 0;
		break;
	case sizeof(unsigned short):
		m_nBits = 1;
		break;
	case sizeof(DWORD):
		m_nBits = 2;
		break;
	}
	UpdateData(FALSE);

	GetImageSize();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CImageSizeDialog::GetImageSize()
{
	UpdateData(TRUE);
	switch(m_nBits)
	{
	case 0:
		m_dwImageSize = dwFileLength;
		break;
	case 1:
		m_dwImageSize = dwFileLength / 2;
		break;
	case 2:
		m_dwImageSize = dwFileLength / 4;
		break;
	default:
		ASSERT(FALSE);
		break;
	}
	DWORD	i;
	DWORD	MinDiffernt = 9999999;
	TotalCount = 0;
	for(i = 1; i <= m_dwImageSize; i++)
	{
		if(m_dwImageSize % i == 0)
			TotalCount ++;
	}
	ASSERT(TotalCount > 0);
	pLarge = new DWORD[TotalCount];
	pSmall = new DWORD[TotalCount];
	
	NowPos = 0;
	for(i = 1; i <= m_dwImageSize; i++)
	{
		if(m_dwImageSize % i == 0)
		{
			pSmall[NowPos] = i;
			pLarge[NowPos] = m_dwImageSize / i;
			
			if(MinDiffernt > (DWORD)abs(pLarge[NowPos] - pSmall[NowPos]))
			{
				MinDiffernt = (DWORD)abs(pLarge[NowPos] - pSmall[NowPos]);
				dwDataPos = NowPos;
			}
			
			ASSERT((pSmall[NowPos] * pLarge[NowPos]) == m_dwImageSize);
			NowPos ++;
		}
	}
	ASSERT(NowPos == TotalCount);
	
	///////////////
	m_FileSize = dwFileLength;
	m_dwWidth = pLarge[dwDataPos];
	m_dwHeight = pSmall[dwDataPos];
	UpdateData(FALSE);
}
void CImageSizeDialog::OnButtonLarge() 
{
	if(dwDataPos < TotalCount - 1)
	{
		dwDataPos ++;
		m_dwWidth = pLarge[dwDataPos];
		m_dwHeight = pSmall[dwDataPos];
		UpdateData(FALSE);
	}
}
void CImageSizeDialog::OnButtonSmall() 
{
	if(dwDataPos > 0)
	{
		dwDataPos --;
		m_dwWidth = pLarge[dwDataPos];
		m_dwHeight = pSmall[dwDataPos];
		UpdateData(FALSE);
	}
}
void CImageSizeDialog::OnCloseupCombo() 
{
	BeginWaitCursor();
	GetImageSize();
	EndWaitCursor();
}

⌨️ 快捷键说明

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