📄 imgdispdlg.cpp
字号:
// ImgDispDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "Ex_UseImage.h"
#include "ImgDispDlg.h"
// CImgDispDlg 对话框
IMPLEMENT_DYNAMIC(CImgDispDlg, CDialog)
CImgDispDlg::CImgDispDlg(CWnd* pParent /*=NULL*/)
: CDialog(CImgDispDlg::IDD, pParent)
, m_bAlphaValue(0)
{
}
CImgDispDlg::~CImgDispDlg()
{
}
void CImgDispDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDITALPHA, m_bAlphaValue);
DDV_MinMaxByte(pDX, m_bAlphaValue, 0, 255);
DDX_Control(pDX, IDC_SPIN1, m_spinAlpha);
}
BEGIN_MESSAGE_MAP(CImgDispDlg, CDialog)
ON_BN_CLICKED(IDC_RADIO1, OnBnClickedRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnBnClickedRadio2)
ON_BN_CLICKED(IDC_PREVIEW, OnBnClickedPreview)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_WM_PAINT()
END_MESSAGE_MAP()
// CImgDispDlg 消息处理程序
void CImgDispDlg::OnBnClickedRadio1()
{
// TODO: 在此添加控件通知处理程序代码
m_nDispMode = 0;
GetDlgItem(IDC_EDITALPHA)->EnableWindow(FALSE);
GetDlgItem(IDC_SPIN1)->EnableWindow(FALSE);
}
void CImgDispDlg::OnBnClickedRadio2()
{
// TODO: 在此添加控件通知处理程序代码
m_nDispMode = 1;
GetDlgItem(IDC_EDITALPHA)->EnableWindow();
GetDlgItem(IDC_SPIN1)->EnableWindow();
}
void CImgDispDlg::OnBnClickedPreview()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();
OnPaint();
}
void CImgDispDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();
OnOK();
}
BOOL CImgDispDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
m_nDispMode = 0;
GetDlgItem(IDC_EDITALPHA)->EnableWindow(FALSE);
GetDlgItem(IDC_SPIN1)->EnableWindow(FALSE);
m_spinAlpha.SetRange(0,255);
CheckRadioButton(IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);
m_bAlphaValue = 128;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// 异常:OCX 属性页应返回 FALSE
}
void CImgDispDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CWnd* pWnd = GetDlgItem(IDC_IMAGEDRAW);
CDC* pDC = pWnd->GetDC();
CRect rc;
pWnd->GetClientRect(rc);
// 以下目的是保持图像的纵横比
double imgRatio = (double)(m_dlgImage.GetHeight())/(double)(m_dlgImage.GetWidth());
int height = (int)((double)(rc.Width())*imgRatio);
CRect rcDest(0,0,m_dlgImage.GetWidth(),m_dlgImage.GetHeight());
if (height>rc.Height()) {
rc.DeflateRect((rc.Width() - (int)((double)(rc.Height())/imgRatio))/2,0);
} else {
rc.DeflateRect(0,(rc.Height()-height)/2);
}
pWnd->Invalidate();
pWnd->UpdateWindow();
switch (m_nDispMode) {
case 0:
m_dlgImage.Draw(pDC->m_hDC,rc);
break;
case 1:
m_dlgImage.AlphaBlend(pDC->m_hDC,rc,rcDest,m_bAlphaValue);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -