ImageProcessingView.cpp
上传用户:piaozanzhu
上传日期:2008-02-14
资源大小:212k
文件大小:4k
源码类别:

图形图像处理

开发平台:

Visual C++

  1. // ImageProcessingView.cpp : implementation of the CImageProcessingView class
  2. //
  3. #include "stdafx.h"
  4. #include "ImageProcessing.h"
  5. #include "ImageProcessingDoc.h"
  6. #include "ImageProcessingView.h"
  7. #include  "GlobalApi.h"
  8. #include <complex>
  9. #include "DlgMosaics.h"
  10. #ifdef _DEBUG
  11. #define new DEBUG_NEW
  12. #undef THIS_FILE
  13. static char THIS_FILE[] = __FILE__;
  14. #endif
  15. /////////////////////////////////////////////////////////////////////////////
  16. // CImageProcessingView
  17. IMPLEMENT_DYNCREATE(CImageProcessingView, CScrollView)
  18. BEGIN_MESSAGE_MAP(CImageProcessingView, CScrollView)
  19. //{{AFX_MSG_MAP(CImageProcessingView)
  20. ON_COMMAND(ID_MOSAIC, OnMosaic)
  21. //}}AFX_MSG_MAP
  22. // Standard printing commands
  23. ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
  24. ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
  25. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
  26. END_MESSAGE_MAP()
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CImageProcessingView construction/destruction
  29. CImageProcessingView::CImageProcessingView()
  30. {
  31. }
  32. CImageProcessingView::~CImageProcessingView()
  33. {
  34. }
  35. BOOL CImageProcessingView::PreCreateWindow(CREATESTRUCT& cs)
  36. {
  37. // TODO: Modify the Window class or styles here by modifying
  38. //  the CREATESTRUCT cs
  39. return CScrollView::PreCreateWindow(cs);
  40. }
  41. /////////////////////////////////////////////////////////////////////////////
  42. // CImageProcessingView drawing
  43. void CImageProcessingView::OnDraw(CDC* pDC)
  44. {
  45. CImageProcessingDoc* pDoc = GetDocument();
  46. ASSERT_VALID(pDoc);
  47. CSize sizeDibDisplay;
  48. if(!pDoc->m_pDibInit->IsEmpty()){
  49. sizeDibDisplay = pDoc->m_pDibInit->GetDimensions();
  50. pDoc->m_pDibInit->Draw(pDC,CPoint(0,0),sizeDibDisplay);
  51. }
  52. }
  53. void CImageProcessingView::OnInitialUpdate()
  54. {
  55. CScrollView::OnInitialUpdate();
  56. CImageProcessingDoc* pDoc = GetDocument();
  57. ASSERT_VALID(pDoc);
  58. CSize sizeTotal = pDoc->m_pDibInit->GetDimensions();
  59. SetScrollSizes(MM_TEXT, sizeTotal);
  60. GetParentFrame()->RecalcLayout();
  61. ResizeParentToFit();
  62. }
  63. /////////////////////////////////////////////////////////////////////////////
  64. // CImageProcessingView printing
  65. BOOL CImageProcessingView::OnPreparePrinting(CPrintInfo* pInfo)
  66. {
  67. // default preparation
  68. return DoPreparePrinting(pInfo);
  69. }
  70. void CImageProcessingView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  71. {
  72. // TODO: add extra initialization before printing
  73. }
  74. void CImageProcessingView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  75. {
  76. // TODO: add cleanup after printing
  77. }
  78. /////////////////////////////////////////////////////////////////////////////
  79. // CImageProcessingView diagnostics
  80. #ifdef _DEBUG
  81. void CImageProcessingView::AssertValid() const
  82. {
  83. CScrollView::AssertValid();
  84. }
  85. void CImageProcessingView::Dump(CDumpContext& dc) const
  86. {
  87. CScrollView::Dump(dc);
  88. }
  89. CImageProcessingDoc* CImageProcessingView::GetDocument() // non-debug version is inline
  90. {
  91. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CImageProcessingDoc)));
  92. return (CImageProcessingDoc*)m_pDocument;
  93. }
  94. #endif //_DEBUG
  95. /////////////////////////////////////////////////////////////////////////////
  96. // CImageProcessingView message handlers
  97. void CImageProcessingView::OnMosaic() 
  98. {
  99. // TODO: Add your command handler code here
  100. // 获得文档类句柄
  101. CImageProcessingDoc* pDoc;
  102. pDoc = GetDocument();
  103. // 判断是否是8-bpp位图(这里为了方便,只处理8-bpp位图的水平镜像,其它的可以类推)
  104. if(pDoc->m_pDibInit->m_nColorTableEntries != 256)
  105. {
  106. // 提示用户
  107. MessageBox("目前只支持256色位图的图象配准!", "系统提示" , 
  108. MB_ICONINFORMATION | MB_OK);
  109. // 返回
  110. return;
  111. }
  112. // 打开图象配准对话框
  113. CDlgMosaics* pDlg=new CDlgMosaics(NULL,pDoc);
  114. pDlg->DoModal();
  115. delete pDlg;
  116. }