📄 rotatedlg.cpp
字号:
// RotateDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "photoshow.h"
#include "RotateDlg.h"
#include "MainFrm.h"
#include "photoshowDoc.h"
#include "photoshowView.h"
#include "GeoOperator.h"
// CRotateDlg 对话框
#define PI 3.1415926535
IMPLEMENT_DYNAMIC(CRotateDlg, CDialog)
CRotateDlg::CRotateDlg(CWnd* pParent /*=NULL*/)
: CDialog(CRotateDlg::IDD, pParent)
, m_nAngle(0)
, m_nPos(0)
, m_nType(0)
{
}
CRotateDlg::~CRotateDlg()
{
}
void CRotateDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_ANGLE, m_nAngle);
DDX_Slider(pDX, IDC_SLIDER, m_nPos);
DDX_CBIndex(pDX, IDC_MODE, m_nType);
}
BEGIN_MESSAGE_MAP(CRotateDlg, CDialog)
ON_EN_CHANGE(IDC_ANGLE, &CRotateDlg::OnEnChangeAngle)
ON_BN_CLICKED(IDC_PREV, &CRotateDlg::OnBnClickedPrev)
ON_BN_CLICKED(IDOK, &CRotateDlg::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &CRotateDlg::OnBnClickedCancel)
ON_WM_HSCROLL()
END_MESSAGE_MAP()
// CRotateDlg 消息处理程序
void CRotateDlg::Refresh(void)
{
UpdateData(TRUE);
// 更新预览对话框
CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();
CphotoshowView* pView = (CphotoshowView*)pMain->GetActiveView();
SAFE_DELETE_ARRAY (pView->m_pImageTempBuffer);
if (m_nType == 0)
RotateNormal(pView->m_pImageBuffer, pView->m_pImageTempBuffer,
pView->m_nPicWidth, pView->m_nPicHeight, pView->m_nTempWidth,
pView->m_nTempHeight, m_nAngle / 180.0 * PI);
else
RotateInterpolation(pView->m_pImageBuffer, pView->m_pImageTempBuffer,
pView->m_nPicWidth, pView->m_nPicHeight, pView->m_nTempWidth,
pView->m_nTempHeight, m_nAngle / 180.0 * PI);
}
BOOL CRotateDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 修改“旋转角度”的范围
((CSliderCtrl*)GetDlgItem(IDC_SLIDER))->SetRange(0, 360);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CRotateDlg::OnEnChangeAngle()
{
UpdateData(TRUE);
if (m_nAngle < 0)
m_nAngle = 0;
if (m_nAngle > 360)
m_nAngle = 360;
m_nPos = m_nAngle;
UpdateData(FALSE);
}
void CRotateDlg::OnBnClickedPrev()
{
Refresh();
CPreviewDlg dlg;
dlg.m_nType = 1;
dlg.DoModal();
}
void CRotateDlg::OnBnClickedOk()
{
CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();
CphotoshowView* pView = (CphotoshowView*)pMain->GetActiveView();
Refresh();
pView->OnFileSave();
m_bModify = false;
OnOK();
}
void CRotateDlg::OnBnClickedCancel()
{
if (m_bModify)
{
if (IDYES == MessageBox(L"图像已经更改,是否保存?", L"photoshow", MB_YESNO))
OnBnClickedOk();
}
OnCancel();
}
void CRotateDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
UpdateData(TRUE);
m_nAngle = m_nPos;
UpdateData(FALSE);
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -