简单图片查看器小程序源代码实现

建立对话框工程,编辑对话框:

简单图片查看器小程序源代码实现_第1张图片

建立消息响应,写入代码:

void CInvalidateDlg::OnBnClickedButton2()////显示 
{ 
// TODO: 在此添加控件通知处理程序代码 
nType=1; 
Invalidate(); 
} 
 
 
void CInvalidateDlg::OnBnClickedButton3()////缩小 
{ 
// TODO: 在此添加控件通知处理程序代码 
nType=2; 
Invalidate(); 
} 
 
 
void CInvalidateDlg::OnBnClickedButton4()///放大 
{ 
// TODO: 在此添加控件通知处理程序代码 
nType=3; 
Invalidate(); 
} 
 
 
void CInvalidateDlg::OnBnClickedButton1()////选择按钮 
{ 
// TODO: 在此添加控件通知处理程序代码 
CFileDialog fileDlg(TRUE); 
fileDlg.m_ofn.lpstrFilter = L"位图文件(*.bmp)\0*.bmp\0所有文件(*.*)\0*.*\0\0"; 
if (fileDlg.DoModal() == IDOK) 
{ 
szfile=fileDlg.GetPathName(); 
m_PicPath.SetWindowTextW(szfile); 
if (m_pBmp != NULL) 
{ 
delete m_pBmp; 
//Invalidate(); 
m_pBmp = NULL; 
} 
m_pBmp = Bitmap::FromFile(szfile.AllocSysString()); 
Color bkClr(0, 0, 255); 
m_pBmp->GetHBITMAP(bkClr, &hBmp); 
nWidth=m_pBmp->GetWidth(); 
nHeight = m_pBmp->GetHeight(); 
szfile.ReleaseBuffer(); 
} 
} 
void CInvalidateDlg::OnPaint() 
{ 
if (IsIconic()) 
{ 
CPaintDC dc(this); // 用于绘制的设备上下文 
 
SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); 
 
// 使图标在工作区矩形中居中 
int cxIcon = GetSystemMetrics(SM_CXICON); 
int cyIcon = GetSystemMetrics(SM_CYICON); 
CRect rect; 
GetClientRect(&rect); 
int x = (rect.Width() - cxIcon + 1) / 2; 
int y = (rect.Height() - cyIcon + 1) / 2; 
 
// 绘制图标 
dc.DrawIcon(x, y, m_hIcon); 
} 
else 
{ 
PAINTSTRUCT ps; 
CDC *pDC=BeginPaint(&ps); 
CDC memDC; 
if(nType==1) 
{ 
m_pBmp = Bitmap::FromFile(szfile.AllocSysString()); 
Color bkClr(0, 0, 255); 
//CDC *pDC=GetDC(); 
//CDC memDC; 
m_pBmp->GetHBITMAP(bkClr, &hBmp); 
memDC.CreateCompatibleDC(pDC); 
memDC.SelectObject(hBmp); 
pDC->BitBlt(100,100,nWidth,nHeight,&memDC,0,0,SRCCOPY); 
} 
if(nType==2) 
{ 
m_pBmp = Bitmap::FromFile(szfile.AllocSysString()); 
Color bkClr(0, 0, 255); 
//CDC *pDC=GetDC(); 
//CDC memDC; 
m_pBmp->GetHBITMAP(bkClr, &hBmp); 
memDC.CreateCompatibleDC(pDC); 
memDC.SelectObject(hBmp); 
pDC->StretchBlt(100,100,nWidth/2,nHeight/2,&memDC,0,0,nWidth,nHeight,SRCCOPY); 
} 
if(nType==3) 
{ 
m_pBmp = Bitmap::FromFile(szfile.AllocSysString()); 
Color bkClr(0, 0, 255); 
//CDC *pDC=GetDC(); 
//CDC memDC; 
m_pBmp->GetHBITMAP(bkClr, &hBmp); 
memDC.CreateCompatibleDC(pDC); 
memDC.SelectObject(hBmp); 
pDC->StretchBlt(100,100,nWidth+50,nHeight+50,&memDC,0,0,nWidth,nHeight,SRCCOPY); 
} 
EndPaint(&ps); 
CDialogEx::OnPaint(); 
} 
}
头文件部分:
Bitmap *m_pBmp;//定义位图对象,派生于Image类 
HBITMAP hBmp; 
INT nWidth; 
INT nHeight; 
INT nType; 
CString szfile;
注意哦!这是个GDI+项目,需要引入必要的GDI+代码。请到之前的文章找GDI+代码

简单图片查看器小程序源代码实现_第2张图片

你可能感兴趣的:(图像处理,C/C++)