draw.cpp
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:2k
源码类别:

图形图象

开发平台:

Visual C++

  1. /********************************************************************
  2. draw.cpp - ISee图像浏览器—图像处理模块图像实现代码文件
  3.     版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's
  4.     这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用许可证
  5. 条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你
  6. 的选择)用任何更新的版本。
  7.     发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
  8. 目地的隐含的担保。更详细的情况请参阅GNU通用许可证。
  9.     你应该已经和程序一起收到一份GNU通用许可证(GPL)的副本。如果还没有,
  10. 写信给:
  11.     The Free Software Foundation, Inc.,  675  Mass Ave,  Cambridge,
  12.     MA02139,  USA
  13. 如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联
  14. 系:
  15. http://isee.126.com
  16. http://www.vchelp.net
  17. 或:
  18. iseesoft@china.com
  19. 作者:临风
  20.    e-mail:ringphone@sina.com
  21.    功能实现:图像显示(DrawDIB实现)
  22. 文件版本:
  23. Build 00617
  24. Date  2000-6-17
  25. ********************************************************************/
  26. #include "p_win.h"
  27. #include "..publicgol_proc.h"
  28. #include "filter.h"
  29. #include "draw.h"
  30. HDRAWDIB m_hDrawDib;
  31. BITMAPINFO m_bmif;
  32. //初始化,显示图像前必须调用该函数
  33. void InitDraw()
  34. {
  35. m_hDrawDib=DrawDibOpen();
  36.    m_bmif.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
  37.    m_bmif.bmiHeader.biPlanes=1;
  38.    m_bmif.bmiHeader.biBitCount=(WORD)lpProcInfo->sImageInfo.bitperpix;
  39.    m_bmif.bmiHeader.biCompression=BI_RGB;
  40.    m_bmif.bmiHeader.biSizeImage=0;
  41.    m_bmif.bmiHeader.biXPelsPerMeter=0;
  42.    m_bmif.bmiHeader.biYPelsPerMeter=0;
  43.    m_bmif.bmiHeader.biClrUsed=0;
  44.    m_bmif.bmiHeader.biClrImportant=0;
  45. }
  46. //结束显示
  47. void EndDraw()
  48. {
  49. DrawDibClose( m_hDrawDib );
  50. }
  51. //显示图像
  52. BOOL DoDlgDraw(HDC hDC,RECT *rc_dest,int src_width,int src_height,LPVOID lpData)
  53. {
  54. if (lpData==NULL)
  55. return FALSE;
  56.    m_bmif.bmiHeader.biWidth=src_width;
  57.    m_bmif.bmiHeader.biHeight=src_height;
  58.    return DrawDibDraw ( m_hDrawDib, hDC,rc_dest->left,rc_dest->top,rc_dest->right-rc_dest->left,rc_dest->bottom-rc_dest->top,
  59. &(m_bmif.bmiHeader), lpData,0,0,src_width,src_height,DDF_HALFTONE);
  60. }
  61. void PaintDlgBk(HWND hWnd)
  62. {
  63. if (!hWnd)
  64.     return;
  65.    PAINTSTRUCT ps;
  66.    HDC hmemdc;
  67.    BeginPaint(hWnd,&ps);
  68.    hmemdc=CreateCompatibleDC(ps.hdc);
  69.    SelectObject(hmemdc,hbm);
  70.    for(int j=0;j<WinHeight(hWnd);j+=48)
  71.      for(int i=0;i<WinWidth(hWnd);i+=48)
  72.         BitBlt(ps.hdc,i,j,48,48,hmemdc,0,0,SRCCOPY);
  73.    DeleteDC(hmemdc);
  74.    EndPaint(hWnd,&ps);
  75. }