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

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


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

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<WPARAM>(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+代码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值