设为首页 加入收藏

TOP

17.9.2 新建相册模块的设计与实现(3)
2013-10-07 14:39:37 来源: 作者: 【 】 浏览:54
Tags:17.9.2 新建 相册 模块 设计 实现

17.9.2  新建相册模块的设计与实现(3)

【代码解析】

在本函数中主要是获取用户选择的新相片的路径,支持JPG、BMP等多种图像格式的相片。当用户选择完成后,第15~19行将新相片的路径插入列表框,并将其添加到相片的路径数组中。第25~29行载入新相片资源,将相片数加1后重绘窗体。

(6)重载窗体的OnPaint()函数,新相册中相片的预览功能就在这个函数中实现。

  1. 01  void CMyNewAlbumDlg::OnPaint()   
  2. 02  {  
  3. 03      CPaintDC dc(this);  
  4. 04      CDC dcMemory;                           //创建兼容的内存设备  
  5. 05      dcMemory.CreateCompatibleDC(NULL);  
  6. 06      CRect bkRect;  
  7. 07      GetClientRect(&bkRect);                 //获取窗体尺寸  
  8. 08      CBitmap bitmap;  
  9. 09      bitmap.CreateCompatibleBitmap(&dc, bkRect.Width(), bkRect  
  10.         .Height());  
  11. 10      COLORREF color = GetSysColor(COLOR_3DFACE);  
  12. 11      SelectObject(dcMemory.GetSafeHdc(), bitmap);    //将位图选入内存设备  
  13. 12      dcMemory.FillSolidRect(bkRect,color);           //设置内存设备背景色  
  14. 13      Graphics g(dcMemory.m_hDC);   
  15. 14      Image bk_image(L"背景\\bg001.bmp");           //载入内存设备背景图像  
  16. 15      g.DrawImage(&bk_image,bkRect.left,bkRect.top,bkRect.Width(),  
  17.         bkRect.Height());  
  18. 16      //将相册中所有的相片绘制到内存设备上  
  19. 17      for(int i = 0; i < m_totleNum; i++)  
  20. 18      {  
  21. 19          g.DrawImage(m_image[i],305 + ((i%5)*120),55 + (i / 5)*120,100,  
  22.             100);  
  23. 20      }  
  24. 21      //将内存设备上的内容复制到屏幕上  
  25. 22      dc.BitBlt(0,0,bkRect.Width(),bkRect.Height(),&dcMemory,0,0,  
  26.         SRCCOPY);  
  27. 23      CDialog::OnPaint();  
  28. 24  }  

【代码解析】

本函数实现的主要功能就是将图像绘制到界面上,双缓冲技术见前几节的内容。第17~20行是实现图像绘制的主要部分,它将图像绘制在界面上以(305,55)为起点的区域内,每行绘制5个图像,每个图像绘制的区域大小为100×100个像素。图像上下左右间隔20个像素。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇17.9.3 电子相册浏览模块的设计与.. 下一篇17.8 利用GDI+实现翻页效果(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: