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

来源:互联网 发布:细胞因子的网络特征 编辑:程序博客网 时间:2024/05/21 08:48

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


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

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


原创粉丝点击