ImageView.cpp
上传用户:aqingfeng
上传日期:2014-03-25
资源大小:1839k
文件大小:2k
源码类别:

波变换

开发平台:

Visual C++

  1. // ImageView.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "小波变换.h"
  5. #include "ImageView.h"
  6. #include "小波变换Doc.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CImageView
  14. IMPLEMENT_DYNCREATE(CImageView, CView)
  15. CImageView::CImageView()
  16. {
  17. }
  18. CImageView::~CImageView()
  19. {
  20. }
  21. BEGIN_MESSAGE_MAP(CImageView, CView)
  22. //{{AFX_MSG_MAP(CImageView)
  23. // NOTE - the ClassWizard will add and remove mapping macros here.
  24. //}}AFX_MSG_MAP
  25. END_MESSAGE_MAP()
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CImageView drawing
  28. void CImageView::OnDraw(CDC* pDC)
  29. {
  30. // TODO: add draw code here
  31.    CMyDoc* pDoc = GetDocument();
  32. unsigned char* pBitmap = pDoc -> m_pBitmap;
  33. LPBITMAPINFO lpBitmapInfo = (LPBITMAPINFO)(pBitmap+14);
  34. unsigned char* pBitmapData = pBitmap+((LPBITMAPFILEHEADER)pBitmap)->bfOffBits;
  35. unsigned long biHeight = ((LPBITMAPINFOHEADER)lpBitmapInfo)->biHeight;
  36. unsigned long biWidth = ((LPBITMAPINFOHEADER)lpBitmapInfo)->biWidth;
  37. CRect rect;
  38. GetClientRect(&rect);
  39. long originx =0;
  40. long originy =0;
  41. if((unsigned long)(rect.Width()) > biWidth)
  42. originx = (rect.Width() - biWidth)>>1;
  43. if((unsigned long)(rect.Height()) > biHeight)
  44. originy = (rect.Height() - biHeight)>>1;
  45. SetDIBitsToDevice(pDC->m_hDC, originx, originy, biWidth, biHeight, 0, 0, 0, biHeight, pBitmapData, 
  46. lpBitmapInfo, DIB_RGB_COLORS);//把DIB的部分区域或整张图画在DC中,originx和originy是目的地的左上角坐标
  47. //biWidth和biHeight是欲显示的矩形区域的宽度和高度,欲显示的矩形区域的左上角的起点是(0,0),第一条扫描线的起点是0,pBitmapData是DIB阵列
  48. //的指针,lpBitmapInfo是DIB信息的指针,DIB_RGB_COLORS是使用的颜色方式
  49. }
  50. /////////////////////////////////////////////////////////////////////////////
  51. // CImageView diagnostics
  52. #ifdef _DEBUG
  53. void CImageView::AssertValid() const
  54. {
  55. CView::AssertValid();
  56. }
  57. void CImageView::Dump(CDumpContext& dc) const
  58. {
  59. CView::Dump(dc);
  60. }
  61. CMyDoc* CImageView::GetDocument() // non-debug version is inline
  62. {
  63. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
  64. return (CMyDoc*)m_pDocument;
  65. }
  66. #endif //_DEBUG
  67. /////////////////////////////////////////////////////////////////////////////
  68. // CImageView message handlers
  69. BOOL CImageView::PreCreateWindow(CREATESTRUCT& cs) 
  70. {
  71. cs.cy = cs.cx =0;
  72. return CView::PreCreateWindow(cs);
  73. }