?? imagenview.cpp
字號:
// ImageNView.cpp : implementation of the CImageNView class
//
#include "stdafx.h"
#include "ImageN.h"
#include "ImageNDoc.h"
#include "ImageNView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CImage SaveCanvus,WorkCanvus,img2,img3,img4,img5,img6,img7,img8,WindowCanvus;
extern CImage* pImg[10];
extern CString m_FileName;
extern int nDirectionNo,nSobelFlag,nTrackFlag;
extern double DoubleTab[256];
/////////////////////////////////////////////////////////////////////////////
// CImageNView
IMPLEMENT_DYNCREATE(CImageNView, CView)
BEGIN_MESSAGE_MAP(CImageNView, CView)
//{{AFX_MSG_MAP(CImageNView)
ON_WM_PAINT()
ON_COMMAND(ID_REFRESH, OnRefresh)
ON_UPDATE_COMMAND_UI(ID_REFRESH, OnUpdateRefresh)
ON_COMMAND(ID_GRAY_IMAGE, OnGrayImage)
ON_UPDATE_COMMAND_UI(ID_GRAY_IMAGE, OnUpdateGrayImage)
ON_COMMAND(ID_GT_EXP, OnGtExp)
ON_COMMAND(ID_GT_SQUARE, OnGtSquare)
ON_COMMAND(ID_GT_LINEAR, OnGtLinear)
ON_COMMAND(ID_GT_SQRT, OnGtSqrt)
ON_COMMAND(ID_GT_LOG, OnGtLog)
ON_COMMAND(ID_GT_EQUAL, OnGtEqual)
ON_COMMAND(ID_GT_HISTO_EQ, OnGtHistoEq)
ON_COMMAND(ID_GT_NEGA, OnGtNega)
ON_COMMAND(ID_BORDER_EQUAL, OnBorderEqual)
ON_COMMAND(ID_GT_PSENDOCOLOR, OnGtPsendoColor)
ON_COMMAND(ID_OTSU_THRESHOLD, OnOtsuThreshold)
ON_UPDATE_COMMAND_UI(ID_GT_EXP, OnUpdateGtExp)
ON_UPDATE_COMMAND_UI(ID_GT_SQUARE, OnUpdateGtSquare)
ON_UPDATE_COMMAND_UI(ID_GT_LINEAR, OnUpdateGtLinear)
ON_UPDATE_COMMAND_UI(ID_GT_SQRT, OnUpdateGtSqrt)
ON_UPDATE_COMMAND_UI(ID_GT_LOG, OnUpdateGtLog)
ON_UPDATE_COMMAND_UI(ID_GT_EQUAL, OnUpdateGtEqual)
ON_UPDATE_COMMAND_UI(ID_GT_HISTO_EQ, OnUpdateGtHistoEq)
ON_UPDATE_COMMAND_UI(ID_GT_NEGA, OnUpdateGtNega)
ON_UPDATE_COMMAND_UI(ID_BORDER_EQUAL, OnUpdateBorderEqual)
ON_UPDATE_COMMAND_UI(ID_GT_PSENDOCOLOR, OnUpdateGtPsendoColor)
ON_COMMAND(ID_DENSITY_SEGMENT, OnDensitySegment)
ON_UPDATE_COMMAND_UI(ID_DENSITY_SEGMENT, OnUpdateDensitySegment)
ON_COMMAND(ID_MINIMUM_THRESHOLD, OnMinimumThreshold)
ON_COMMAND(ID_ENTROPIC_THRESHOLD, OnEntropicThreshold)
ON_COMMAND(ID_MOMENT_THRESHOLD, OnMomentThreshold)
ON_COMMAND(ID_BIASNORMAL_THRESHOLD, OnBiasnormalThreshold)
ON_UPDATE_COMMAND_UI(ID_OTSU_THRESHOLD, OnUpdateOtsuThreshold)
ON_UPDATE_COMMAND_UI(ID_MINIMUM_THRESHOLD, OnUpdateMinimumThreshold)
ON_UPDATE_COMMAND_UI(ID_ENTROPIC_THRESHOLD, OnUpdateEntropicThreshold)
ON_UPDATE_COMMAND_UI(ID_MOMENT_THRESHOLD, OnUpdateMomentThreshold)
ON_UPDATE_COMMAND_UI(ID_BIASNORMAL_THRESHOLD, OnUpdateBiasnormalThreshold)
ON_COMMAND(ID_SMOOTH5, OnSmooth5)
ON_COMMAND(ID_SMOOTH9, OnSmooth9)
ON_COMMAND(ID_MEDIAN5, OnMedian5)
ON_COMMAND(ID_MEDIAN9, OnMedian9)
ON_COMMAND(ID_GRAD_BORDDETEC, OnGradBorddetec)
ON_COMMAND(ID_ROBERTS_BORDDETEC, OnRobertsBorddetec)
ON_COMMAND(ID_SOBEL_BORDDETEC, OnSobelBorddetec)
ON_COMMAND(ID_LAPLACE_BORDDETEC, OnLaplaceBorddetec)
ON_COMMAND(ID_KIRSCH_BORDDETEC, OnKirschBorddetec)
ON_COMMAND(ID_ROBINSON_BORDDETEC, OnRobinsonBorddetec)
ON_COMMAND(ID_PREWITT_BORDDETEC, OnPrewittBorddetec)
ON_COMMAND(ID_BOUNDARY_ENHANCE, OnBoundaryEnhance)
ON_UPDATE_COMMAND_UI(ID_SMOOTH5, OnUpdateSmooth5)
ON_UPDATE_COMMAND_UI(ID_SMOOTH9, OnUpdateSmooth9)
ON_UPDATE_COMMAND_UI(ID_MEDIAN5, OnUpdateMedian5)
ON_UPDATE_COMMAND_UI(ID_MEDIAN9, OnUpdateMedian9)
ON_UPDATE_COMMAND_UI(ID_GRAD_BORDDETEC, OnUpdateGradBorddetec)
ON_UPDATE_COMMAND_UI(ID_ROBERTS_BORDDETEC, OnUpdateRobertsBorddetec)
ON_UPDATE_COMMAND_UI(ID_SOBEL_BORDDETEC, OnUpdateSobelBorddetec)
ON_UPDATE_COMMAND_UI(ID_LAPLACE_BORDDETEC, OnUpdateLaplaceBorddetec)
ON_UPDATE_COMMAND_UI(ID_KIRSCH_BORDDETEC, OnUpdateKirschBorddetec)
ON_UPDATE_COMMAND_UI(ID_ROBINSON_BORDDETEC, OnUpdateRobinsonBorddetec)
ON_UPDATE_COMMAND_UI(ID_PREWITT_BORDDETEC, OnUpdatePrewittBorddetec)
ON_UPDATE_COMMAND_UI(ID_BOUNDARY_ENHANCE, OnUpdateBoundaryEnhance)
ON_COMMAND(ID_CONSERVATION_IMAGE, OnConservationImage)
ON_UPDATE_COMMAND_UI(ID_CONSERVATION_IMAGE, OnUpdateConservationImage)
ON_COMMAND(ID_HILDITCH_THINNING, OnHilditchThinning)
ON_COMMAND(ID_DEUTCH_THINNING, OnDeutchThinning)
ON_COMMAND(ID_FASTTHIN_THINNING, OnFastthinThinning)
ON_COMMAND(ID_NACCACHE_THINNING, OnNaccacheThinning)
ON_COMMAND(ID_PAVLIDIS1_THINNING, OnPavlidis1Thinning)
ON_COMMAND(ID_PAVLIDIS2_THINNING, OnPavlidis2Thinning)
ON_COMMAND(ID_ROSENFELD4_THINNING, OnRosenfeld4Thinning)
ON_COMMAND(ID_ROSENFELD8_THINNIN, OnRosenfeld8Thinnin)
ON_UPDATE_COMMAND_UI(ID_HILDITCH_THINNING, OnUpdateHilditchThinning)
ON_UPDATE_COMMAND_UI(ID_DEUTCH_THINNING, OnUpdateDeutchThinning)
ON_UPDATE_COMMAND_UI(ID_FASTTHIN_THINNING, OnUpdateFastthinThinning)
ON_UPDATE_COMMAND_UI(ID_NACCACHE_THINNING, OnUpdateNaccacheThinning)
ON_UPDATE_COMMAND_UI(ID_PAVLIDIS1_THINNING, OnUpdatePavlidis1Thinning)
ON_UPDATE_COMMAND_UI(ID_PAVLIDIS2_THINNING, OnUpdatePavlidis2Thinning)
ON_UPDATE_COMMAND_UI(ID_ROSENFELD4_THINNING, OnUpdateRosenfeld4Thinning)
ON_UPDATE_COMMAND_UI(ID_ROSENFELD8_THINNIN, OnUpdateRosenfeld8Thinnin)
ON_COMMAND(ID_DISTANCE, OnDistance)
ON_UPDATE_COMMAND_UI(ID_DISTANCE, OnUpdateDistance)
ON_UPDATE_COMMAND_UI(ID_EROSION, OnUpdateErosion)
ON_COMMAND(ID_EROSION, OnErosion)
ON_COMMAND(ID_DILATION, OnDilation)
ON_COMMAND(ID_OPENING, OnOpening)
ON_COMMAND(ID_CLOSING, OnClosing)
ON_UPDATE_COMMAND_UI(ID_DILATION, OnUpdateDilation)
ON_UPDATE_COMMAND_UI(ID_OPENING, OnUpdateOpening)
ON_UPDATE_COMMAND_UI(ID_CLOSING, OnUpdateClosing)
ON_COMMAND(ID_GRAY_EROSION, OnGrayErosion)
ON_COMMAND(ID_GRAY_DILATION, OnGrayDilation)
ON_COMMAND(ID_GRAY_OPENNING, OnGrayOpenning)
ON_COMMAND(ID_GRAY_CLOSING, OnGrayClosing)
ON_UPDATE_COMMAND_UI(ID_GRAY_EROSION, OnUpdateGrayErosion)
ON_UPDATE_COMMAND_UI(ID_GRAY_DILATION, OnUpdateGrayDilation)
ON_UPDATE_COMMAND_UI(ID_GRAY_OPENNING, OnUpdateGrayOpenning)
ON_UPDATE_COMMAND_UI(ID_GRAY_CLOSING, OnUpdateGrayClosing)
ON_COMMAND(ID_GRAY_GRADS, OnGrayGrads)
ON_COMMAND(ID_GINNER_BORDER, OnGinnerBorder)
ON_COMMAND(ID_GOUTER_BORDER, OnGouterBorder)
ON_COMMAND(ID_GRAY_TOPHAT, OnGrayTophat)
ON_UPDATE_COMMAND_UI(ID_GRAY_GRADS, OnUpdateGrayGrads)
ON_UPDATE_COMMAND_UI(ID_GINNER_BORDER, OnUpdateGinnerBorder)
ON_UPDATE_COMMAND_UI(ID_GOUTER_BORDER, OnUpdateGouterBorder)
ON_UPDATE_COMMAND_UI(ID_GRAY_TOPHAT, OnUpdateGrayTophat)
ON_COMMAND(ID_PROJECTION, OnProjection)
ON_UPDATE_COMMAND_UI(ID_PROJECTION, OnUpdateProjection)
ON_COMMAND(ID_IMAGE_HISTOGRAM, OnImageHistogram)
ON_UPDATE_COMMAND_UI(ID_IMAGE_HISTOGRAM, OnUpdateImageHistogram)
ON_COMMAND(ID_LAPSKETCH_BORDDETEC, OnLapsketchBorddetec)
ON_UPDATE_COMMAND_UI(ID_LAPSKETCH_BORDDETEC, OnUpdateLapsketchBorddetec)
ON_COMMAND(ID_LOG_BORDDETEC, OnLoGBorddetec)
ON_UPDATE_COMMAND_UI(ID_LOG_BORDDETEC, OnUpdateLoGBorddetec)
ON_COMMAND(ID_ONEWIDTH_LINEDETECT, OnOneWidthLineDetect)
ON_UPDATE_COMMAND_UI(ID_ONEWIDTH_LINEDETECT, OnUpdateOneWidthLineDetect)
ON_COMMAND(ID_IMAGE_INVERT, OnImageInvert)
ON_UPDATE_COMMAND_UI(ID_IMAGE_INVERT, OnUpdateImageInvert)
ON_COMMAND(ID_PTILE_THRESHOLD, OnPtileThreshold)
ON_UPDATE_COMMAND_UI(ID_PTILE_THRESHOLD, OnUpdatePtileThreshold)
ON_COMMAND(ID_MORPHOLOGY_THIN, OnMorphologyThin)
ON_UPDATE_COMMAND_UI(ID_MORPHOLOGY_THIN, OnUpdateMorphologyThin)
ON_COMMAND(ID_FORM_ANALYSIS, OnFormAnalysis)
ON_UPDATE_COMMAND_UI(ID_FORM_ANALYSIS, OnUpdateFormAnalysis)
ON_COMMAND(ID_HISTOGRAM_TYPE, OnHistogramType)
ON_UPDATE_COMMAND_UI(ID_HISTOGRAM_TYPE, OnUpdateHistogramType)
ON_COMMAND(ID_REMOVE_LINE_NOISE, OnRemoveLineNoise)
ON_UPDATE_COMMAND_UI(ID_REMOVE_LINE_NOISE, OnUpdateRemoveLineNoise)
ON_COMMAND(ID_IMAGE_HUE, OnImageHue)
ON_COMMAND(ID_IMAGE_SATURATION, OnImageSaturation)
ON_COMMAND(ID_IMAGE_VALUE, OnImageValue)
ON_UPDATE_COMMAND_UI(ID_IMAGE_HUE, OnUpdateImageHue)
ON_UPDATE_COMMAND_UI(ID_IMAGE_SATURATION, OnUpdateImageSaturation)
ON_UPDATE_COMMAND_UI(ID_IMAGE_VALUE, OnUpdateImageValue)
ON_COMMAND(ID_H_S_PLANE, OnHSPlane)
ON_COMMAND(ID_D_S_V_PLANE, OnSVPlane)
ON_COMMAND(ID_D_H_V_PLANE, OnHVPlane)
ON_COMMAND(ID_2DIMENSION_HISTOGRAM, On2DimensionHistogram)
ON_UPDATE_COMMAND_UI(ID_2DIMENSION_HISTOGRAM, OnUpdate2DimensionHistogram)
ON_COMMAND(ID_RGB_HISTOGRAM, OnRgbHistogram)
ON_COMMAND(ID_HSV_HISTOGRAM, OnHsvHistogram)
ON_UPDATE_COMMAND_UI(ID_RGB_HISTOGRAM, OnUpdateRgbHistogram)
ON_UPDATE_COMMAND_UI(ID_HSV_HISTOGRAM, OnUpdateHsvHistogram)
ON_COMMAND(ID_IMAGE_RED, OnImageRed)
ON_COMMAND(ID_IMAGE_GREEN, OnImageGreen)
ON_COMMAND(ID_IMAGE_BLUE, OnImageBlue)
ON_UPDATE_COMMAND_UI(ID_IMAGE_RED, OnUpdateImageRed)
ON_UPDATE_COMMAND_UI(ID_IMAGE_GREEN, OnUpdateImageGreen)
ON_UPDATE_COMMAND_UI(ID_IMAGE_BLUE, OnUpdateImageBlue)
ON_COMMAND(ID_COLOR_SOBEL, OnColorSobel)
ON_COMMAND(ID_COLOR_SOBEL_VECTOR, OnColorSobelVector)
ON_UPDATE_COMMAND_UI(ID_COLOR_SOBEL, OnUpdateColorSobel)
ON_UPDATE_COMMAND_UI(ID_COLOR_SOBEL_VECTOR, OnUpdateColorSobelVector)
ON_UPDATE_COMMAND_UI(ID_2DIMENSION_COMBINE, OnUpdate2DimensionCombine)
ON_COMMAND(ID_2DIMENSION_COMBINE, On2DimensionCombine)
ON_COMMAND(ID_INDEX_IMAGE, OnIndexImage)
ON_UPDATE_COMMAND_UI(ID_INDEX_IMAGE, OnUpdateIndexImage)
ON_COMMAND(ID_CIRCULAR_COLOR_PLANES, OnCircularColorPlanes)
ON_COMMAND(ID_DIRECTION_NO0, OnDirectionNo0)
ON_COMMAND(ID_DIRECTION_NO1, OnDirectionNo1)
ON_COMMAND(ID_DIRECTION_NO2, OnDirectionNo2)
ON_COMMAND(ID_DIRECTION_NO3, OnDirectionNo3)
ON_COMMAND(ID_DIRECTION_NO4, OnDirectionNo4)
ON_COMMAND(ID_DIRECTION_NO5, OnDirectionNo5)
ON_COMMAND(ID_DIRECTION_NO6, OnDirectionNo6)
ON_COMMAND(ID_DIRECTION_NO7, OnDirectionNo7)
ON_COMMAND(ID_DIRECTION_NO8, OnDirectionNo8)
ON_COMMAND(ID_SOBEL_THINNING, OnSobelThinning)
ON_UPDATE_COMMAND_UI(ID_SOBEL_THINNING, OnUpdateSobelThinning)
ON_COMMAND(ID_SAVE_MASK, OnSaveMask)
ON_COMMAND(ID_REMOVE_BACKGROND, OnRemoveBackgrond)
ON_UPDATE_COMMAND_UI(ID_SAVE_MASK, OnUpdateSaveMask)
ON_UPDATE_COMMAND_UI(ID_REMOVE_BACKGROND, OnUpdateRemoveBackgrond)
ON_COMMAND(ID_ADD_IMAGE, OnAddImage)
ON_COMMAND(ID_SAVE_ADD_IMAGE, OnSaveAddImage)
ON_UPDATE_COMMAND_UI(ID_SAVE_ADD_IMAGE, OnUpdateSaveAddImage)
ON_UPDATE_COMMAND_UI(ID_ADD_IMAGE, OnUpdateAddImage)
ON_COMMAND(ID_COLLIGATION_THRESHOLD, OnColligationThreshold)
ON_UPDATE_COMMAND_UI(ID_COLLIGATION_THRESHOLD, OnUpdateColligationThreshold)
ON_COMMAND(ID_SIMPLE_THRESHOLD, OnSimpleThreshold)
ON_UPDATE_COMMAND_UI(ID_SIMPLE_THRESHOLD, OnUpdateSimpleThreshold)
ON_COMMAND(ID_LOG_PREWITT, OnLogPrewitt)
ON_UPDATE_COMMAND_UI(ID_LOG_PREWITT, OnUpdateLogPrewitt)
ON_COMMAND(ID_SOBEL_GRAD_OR, OnSobelGradOr)
ON_UPDATE_COMMAND_UI(ID_SOBEL_GRAD_OR, OnUpdateSobelGradOr)
ON_COMMAND(ID_SOBEL_RGB, OnSobelRgb)
ON_COMMAND(ID_SOBEL_YIQ, OnSobelYiq)
ON_UPDATE_COMMAND_UI(ID_SOBEL_RGB, OnUpdateSobelRgb)
ON_UPDATE_COMMAND_UI(ID_SOBEL_YIQ, OnUpdateSobelYiq)
ON_COMMAND(ID_SOBEL_LAB, OnSobelLab)
ON_UPDATE_COMMAND_UI(ID_SOBEL_LAB, OnUpdateSobelLab)
ON_COMMAND(ID_IMAGE_Y, OnImageY)
ON_COMMAND(ID_IMAGE_I, OnImageI)
ON_COMMAND(ID_IMAGE_Q, OnImageQ)
ON_COMMAND(ID_IMAGE_L, OnImageL)
ON_COMMAND(ID_IMAGE_A, OnImageA)
ON_COMMAND(ID_IMAGE_B, OnImageB)
ON_UPDATE_COMMAND_UI(ID_IMAGE_Y, OnUpdateImageY)
ON_UPDATE_COMMAND_UI(ID_IMAGE_I, OnUpdateImageI)
ON_UPDATE_COMMAND_UI(ID_IMAGE_Q, OnUpdateImageQ)
ON_UPDATE_COMMAND_UI(ID_IMAGE_L, OnUpdateImageL)
ON_UPDATE_COMMAND_UI(ID_IMAGE_A, OnUpdateImageA)
ON_UPDATE_COMMAND_UI(ID_IMAGE_B, OnUpdateImageB)
ON_COMMAND(ID_INNER_BOUNDARY, OnInnerBoundary)
ON_COMMAND(ID_OUTER_BOUNDARY, OnOuterBoundary)
ON_COMMAND(ID_MORPHOLOGY_BOUNDARY, OnMorphologyBoundary)
ON_COMMAND(ID_AREA_SKELETON, OnAreaSkeleton)
ON_UPDATE_COMMAND_UI(ID_INNER_BOUNDARY, OnUpdateInnerBoundary)
ON_UPDATE_COMMAND_UI(ID_OUTER_BOUNDARY, OnUpdateOuterBoundary)
ON_UPDATE_COMMAND_UI(ID_MORPHOLOGY_BOUNDARY, OnUpdateMorphologyBoundary)
ON_UPDATE_COMMAND_UI(ID_AREA_SKELETON, OnUpdateAreaSkeleton)
ON_COMMAND(ID_BLACK_GRAY_TOPHAT, OnBlackGrayTophat)
ON_UPDATE_COMMAND_UI(ID_BLACK_GRAY_TOPHAT, OnUpdateBlackGrayTophat)
ON_COMMAND(ID_REMOVE_NOISE, OnRemoveNoise)
ON_UPDATE_COMMAND_UI(ID_REMOVE_NOISE, OnUpdateRemoveNoise)
ON_COMMAND(ID_PATTERN_THIN, OnPatternThin)
ON_UPDATE_COMMAND_UI(ID_PATTERN_THIN, OnUpdatePatternThin)
ON_COMMAND(ID_2DIMENSION_HISTOGRAM_HV, On2dimensionHistogramHv)
ON_COMMAND(ID_2DIMENSION_HISTOGRAM_SV, On2dimensionHistogramSv)
ON_UPDATE_COMMAND_UI(ID_2DIMENSION_HISTOGRAM_HV, OnUpdate2dimensionHistogramHv)
ON_UPDATE_COMMAND_UI(ID_2DIMENSION_HISTOGRAM_SV, OnUpdate2dimensionHistogramSv)
ON_COMMAND(ID_CONTOUR_TRACKING,OnContourTracking)
ON_COMMAND(ID_AREA_PARAMENT_MEASURE,OnAreaParamentMeasure)
ON_COMMAND(ID_LINE_CODING,OnLineCoding)
ON_COMMAND(ID_AREA_MEASURE,OnAreaMeasure)
ON_COMMAND(ID_SEARCH_AREA_KERNEL,OnSearchAreaKernel)
ON_COMMAND(ID_LIMIT_EROSION,OnLimitErosion)
ON_COMMAND(ID_CONDITION_DILATION,OnConditionDilation)
ON_UPDATE_COMMAND_UI(ID_CONTOUR_TRACKING,OnUpdateContourTracking)
ON_UPDATE_COMMAND_UI(ID_AREA_PARAMENT_MEASURE,OnUpdateAreaParamentMeasure)
ON_UPDATE_COMMAND_UI(ID_LINE_CODING,OnUpdateLineCoding)
ON_UPDATE_COMMAND_UI(ID_AREA_MEASURE,OnUpdateAreaMeasure)
ON_UPDATE_COMMAND_UI(ID_SEARCH_AREA_KERNEL,OnUpdateSearchAreaKernel)
ON_UPDATE_COMMAND_UI(ID_LIMIT_EROSION,OnUpdateLimitErosion)
ON_UPDATE_COMMAND_UI(ID_CONDITION_DILATION,OnUpdateConditionDilation)
ON_COMMAND(ID_AUTOMATIC_SELECT,OnAutomaticSelect)
ON_COMMAND(ID_WHITE_AREA,OnWhiteArea)
ON_COMMAND(ID_BLACK_AREA,OnBlackArea)
ON_UPDATE_COMMAND_UI(ID_AUTOMATIC_SELECT,OnUpdateAutomaticSelect)
ON_UPDATE_COMMAND_UI(ID_WHITE_AREA,OnUpdateWhiteArea)
ON_UPDATE_COMMAND_UI(ID_BLACK_AREA,OnUpdateBlackArea)
ON_COMMAND(ID_SAVE_MASK_A, OnSaveMaskA)
ON_UPDATE_COMMAND_UI(ID_SAVE_MASK_A, OnUpdateSaveMaskA)
ON_WM_LBUTTONUP()
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
ON_COMMAND(ID_MAKE_MASK, OnMakeMask)
ON_UPDATE_COMMAND_UI(ID_MAKE_MASK, OnUpdateMakeMask)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CImageNView construction/destruction
CImageNView::CImageNView()
{
// TODO: add construction code here
HDC hMemDC;
WindowCanvus.Create(1024,768,24,0);
hMemDC = WindowCanvus.GetDC();
WindowCanvus.BitBlt(hMemDC,0,0,1024,768,0,0,WHITENESS);
WindowCanvus.ReleaseDC();
for (int i=0;i<256;i++) DoubleTab[i]=1.0*i/255;
m_nFlag=0;
}
CImageNView::~CImageNView()
{
}
BOOL CImageNView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CImageNView drawing
void CImageNView::OnDraw(CDC* pDC)
{
CImageNDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if (SaveCanvus.IsNull()) return;
ClearWindow(1);
WriteTitle(pImg[1],m_FileName,"");
m_nFlag=0;
}
/////////////////////////////////////////////////////////////////////////////
// CImageNView printing
BOOL CImageNView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CImageNView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CImageNView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CImageNView diagnostics
#ifdef _DEBUG
void CImageNView::AssertValid() const
{
CView::AssertValid();
}
void CImageNView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CImageNDoc* CImageNView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CImageNDoc)));
return (CImageNDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CImageNView message handlers
void CImageNView::OnUpdateGrayImage(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[0]))>2);
}
void CImageNView::OnUpdateImageInvert(CCmdUI *pCmdUI)
{
pCmdUI->Enable(!pImg[1]->IsNull());
}
void CImageNView::OnUpdateRefresh(CCmdUI *pCmdUI)
{
pCmdUI->Enable(!pImg[1]->IsNull());
}
void CImageNView::OnUpdateConservationImage(CCmdUI *pCmdUI)
{
pCmdUI->Enable(!pImg[1]->IsNull());
}
void CImageNView::WriteTitle(CImage* pImg,CString FileName,CString str0) // 顯示帶圖像文件名與分辨率的標題行
{
int i,k;
CString str, str1;
struct IMAGEPARAMENT P;
char drive[_MAX_DRIVE];
char dir[_MAX_DIR];
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
_splitpath(FileName, drive, dir, fname, ext);
CWnd* pMain = AfxGetMainWnd();
CMenu* pMenu = pMain->GetMenu();
k=ImageType(pImg);
for (i=0;i<5;i++)
pMenu->CheckMenuItem(ID_BINARY_IMAGE+i,MF_UNCHECKED);
pMenu->CheckMenuItem(ID_BINARY_IMAGE+k,MF_CHECKED);
GetImageParament(pImg,&P);
if (k==0) P.nBitCount=1;
else if (k==1) P.nBitCount=4;
str1.Format(" (%d×%d×%d)", P.nWidth, P.nHeight, P.nBitCount);
str.LoadString(AFX_IDS_APP_TITLE);
AfxGetMainWnd()->SetWindowText(str+" - "+
fname + ext + str0 +str1);
}
void CImageNView::WorkCanvusToWindow()
{
CClientDC dc(this);
struct IMAGEPARAMENT P;
if (SaveCanvus.IsNull()) return;
GetImageParament(&WorkCanvus,&P);
WorkCanvus.BitBlt(dc,0,0,P.nWidth,P.nHeight,0,0,SRCCOPY);
}
void CImageNView::ClearWindow(int flag)
{
struct IMAGEPARAMENT P;
CClientDC dc(this);
GetImageParament(pImg[1],&P);
dc.SelectStockObject(WHITE_PEN);
dc.SelectStockObject(WHITE_BRUSH);
dc.Rectangle(P.nWidth,0,1023,639);
dc.Rectangle(0,P.nHeight,P.nWidth,639);
if (pImg[0]->IsNull()) return;
if (flag)
WorkCanvusToWindow();
}
void CImageNView::OnRefresh()
{
if (SaveCanvus.IsNull()) return;
ClearWindow(0);
if (ImageType(pImg[0])<2)
LowTypeToIndex(pImg[1],pImg[0]);
else
ImageCopy(pImg[1],pImg[0]);
WriteTitle(pImg[1],m_FileName,"");
WorkCanvusToWindow();
m_nFlag=0;
}
void CImageNView::OnConservationImage()
{
if (pImg[0]->GetWidth()==pImg[1]->GetWidth())
ImageCopy(pImg[0],pImg[1]);
OnRefresh();
}
//----------------------------------------------------------------------------
void CImageNView::OnGrayImage()
{
CString str1;
ColorToGray(pImg[0],pImg[0]);
ImageCopy(pImg[1],pImg[0]);
str1.Format(" 的灰階圖像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnUpdateGtExp(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==2));
}
void CImageNView::OnUpdateGtLinear(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==2));
}
void CImageNView::OnUpdateGtSqrt(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==2));
}
void CImageNView::OnUpdateGtLog(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==2));
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -