draw.cpp
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:2k
- /********************************************************************
- draw.cpp - ISee图像浏览器—图像处理模块图像实现代码文件
- 版权所有(C) VCHelp-coPathway-ISee workgroup 2000 all member's
- 这一程序是自由软件,你可以遵照自由软件基金会出版的GNU 通用许可证
- 条款来修改和重新发布这一程序。或者用许可证的第二版,或者(根据你
- 的选择)用任何更新的版本。
- 发布这一程序的目的是希望它有用,但没有任何担保。甚至没有适合特定
- 目地的隐含的担保。更详细的情况请参阅GNU通用许可证。
- 你应该已经和程序一起收到一份GNU通用许可证(GPL)的副本。如果还没有,
- 写信给:
- The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
- MA02139, USA
- 如果你在使用本软件时有什么问题或建议,用以下地址可以与我们取得联
- 系:
- http://isee.126.com
- http://www.vchelp.net
- 或:
- iseesoft@china.com
- 作者:临风
- e-mail:ringphone@sina.com
- 功能实现:图像显示(DrawDIB实现)
- 文件版本:
- Build 00617
- Date 2000-6-17
- ********************************************************************/
- #include "p_win.h"
- #include "..publicgol_proc.h"
- #include "filter.h"
- #include "draw.h"
- HDRAWDIB m_hDrawDib;
- BITMAPINFO m_bmif;
- //初始化,显示图像前必须调用该函数
- void InitDraw()
- {
- m_hDrawDib=DrawDibOpen();
- m_bmif.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
- m_bmif.bmiHeader.biPlanes=1;
- m_bmif.bmiHeader.biBitCount=(WORD)lpProcInfo->sImageInfo.bitperpix;
- m_bmif.bmiHeader.biCompression=BI_RGB;
- m_bmif.bmiHeader.biSizeImage=0;
- m_bmif.bmiHeader.biXPelsPerMeter=0;
- m_bmif.bmiHeader.biYPelsPerMeter=0;
- m_bmif.bmiHeader.biClrUsed=0;
- m_bmif.bmiHeader.biClrImportant=0;
- }
- //结束显示
- void EndDraw()
- {
- DrawDibClose( m_hDrawDib );
- }
- //显示图像
- BOOL DoDlgDraw(HDC hDC,RECT *rc_dest,int src_width,int src_height,LPVOID lpData)
- {
- if (lpData==NULL)
- return FALSE;
- m_bmif.bmiHeader.biWidth=src_width;
- m_bmif.bmiHeader.biHeight=src_height;
- return DrawDibDraw ( m_hDrawDib, hDC,rc_dest->left,rc_dest->top,rc_dest->right-rc_dest->left,rc_dest->bottom-rc_dest->top,
- &(m_bmif.bmiHeader), lpData,0,0,src_width,src_height,DDF_HALFTONE);
- }
- void PaintDlgBk(HWND hWnd)
- {
- if (!hWnd)
- return;
- PAINTSTRUCT ps;
- HDC hmemdc;
- BeginPaint(hWnd,&ps);
- hmemdc=CreateCompatibleDC(ps.hdc);
- SelectObject(hmemdc,hbm);
- for(int j=0;j<WinHeight(hWnd);j+=48)
- for(int i=0;i<WinWidth(hWnd);i+=48)
- BitBlt(ps.hdc,i,j,48,48,hmemdc,0,0,SRCCOPY);
- DeleteDC(hmemdc);
- EndPaint(hWnd,&ps);
- }