⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageviewview.cpp

📁 主要介绍vc++6.0的编程过程
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	if( NewColorDepth.DoModal() == IDOK ){
		BeginWaitCursor();
		m_pImageObject->ChangeFormat( 8 + NewColorDepth.m_nNewColorDepth * 8 );
		EndWaitCursor();
		InvalidateRect( NULL, FALSE );
		UpdateWindow();
		}

}


void CImageViewView::OnPointprocessesChangebrightness() 
{

	if( m_pTracker == NULL || m_pImageObject == NULL ) return;

	int nX1 = m_pTracker->m_rect.left;
	int nY1 = m_pTracker->m_rect.top;
	int nX2 = m_pTracker->m_rect.right;
	int nY2 = m_pTracker->m_rect.bottom;

	if( nX1 < 0 ) nX1 = 0;
	if( nX1 > m_pImageObject->GetWidth() - 1 ) nX1 = m_pImageObject->GetWidth() - 1;
	if( nY1 < 0 ) nY1 = 0;
	if( nY1 > m_pImageObject->GetHeight() - 1 ) nY1 = m_pImageObject->GetHeight() - 1;
	if( nX2 < 0 ) nX2 = 0;
	if( nX2 > m_pImageObject->GetWidth() - 1 ) nX2 = m_pImageObject->GetWidth() - 1;
	if( nY2 < 0 ) nY2 = 0;
	if( nY2 > m_pImageObject->GetHeight() - 1 ) nY2 = m_pImageObject->GetHeight() - 1;

	if( !m_bCropBoxShowing ){
		nX1 = nY1 = 0;
		nX2 = m_pImageObject->GetWidth() - 1;
		nY2 = m_pImageObject->GetHeight() - 1;
		}

	CBrightness Brightness;
	if( Brightness.DoModal() != IDOK ) return;
	CImagePointProcesses PointProcesses( m_pImageObject );
	BeginWaitCursor();
	PointProcesses.ChangeBrightness( Brightness.m_nBrightness, nX1, nY1, nX2, nY2 );
	EndWaitCursor();

	InvalidateRect( NULL, FALSE );
	UpdateWindow();

}

void CImageViewView::OnPointprocessesColorize() 
{

	if( m_pTracker == NULL || m_pImageObject == NULL ) return;

	int nX1 = m_pTracker->m_rect.left;
	int nY1 = m_pTracker->m_rect.top;
	int nX2 = m_pTracker->m_rect.right;
	int nY2 = m_pTracker->m_rect.bottom;

	if( nX1 < 0 ) nX1 = 0;
	if( nX1 > m_pImageObject->GetWidth() - 1 ) nX1 = m_pImageObject->GetWidth() - 1;
	if( nY1 < 0 ) nY1 = 0;
	if( nY1 > m_pImageObject->GetHeight() - 1 ) nY1 = m_pImageObject->GetHeight() - 1;
	if( nX2 < 0 ) nX2 = 0;
	if( nX2 > m_pImageObject->GetWidth() - 1 ) nX2 = m_pImageObject->GetWidth() - 1;
	if( nY2 < 0 ) nY2 = 0;
	if( nY2 > m_pImageObject->GetHeight() - 1 ) nY2 = m_pImageObject->GetHeight() - 1;

	if( !m_bCropBoxShowing ){
		nX1 = nY1 = 0;
		nX2 = m_pImageObject->GetWidth() - 1;
		nY2 = m_pImageObject->GetHeight() - 1;
		}

	CColorDialog ColorDialog;
	if( ColorDialog.DoModal() != IDOK ) return;
	CImagePointProcesses PointProcesses( m_pImageObject );
	BeginWaitCursor();
	PointProcesses.Colorize( nX1, nY1, nX2, nY2, ColorDialog.GetColor() );
	EndWaitCursor();

	InvalidateRect( NULL, FALSE );
	UpdateWindow();
	
}

void CImageViewView::OnPointprocessesMakegray() 
{

	if( m_pImageObject == NULL ) return;

	CImagePointProcesses PointProcesses( m_pImageObject );
	PointProcesses.MakeGray( TRUE );

	InvalidateRect( NULL, FALSE );
	UpdateWindow();

}

void CImageViewView::OnPointprocessesReversecolors() 
{

	if( m_pTracker == NULL || m_pImageObject == NULL ) return;

	int nX1 = m_pTracker->m_rect.left;
	int nY1 = m_pTracker->m_rect.top;
	int nX2 = m_pTracker->m_rect.right;
	int nY2 = m_pTracker->m_rect.bottom;

	if( nX1 < 0 ) nX1 = 0;
	if( nX1 > m_pImageObject->GetWidth() - 1 ) nX1 = m_pImageObject->GetWidth() - 1;
	if( nY1 < 0 ) nY1 = 0;
	if( nY1 > m_pImageObject->GetHeight() - 1 ) nY1 = m_pImageObject->GetHeight() - 1;
	if( nX2 < 0 ) nX2 = 0;
	if( nX2 > m_pImageObject->GetWidth() - 1 ) nX2 = m_pImageObject->GetWidth() - 1;
	if( nY2 < 0 ) nY2 = 0;
	if( nY2 > m_pImageObject->GetHeight() - 1 ) nY2 = m_pImageObject->GetHeight() - 1;

	if( !m_bCropBoxShowing ){
		nX1 = nY1 = 0;
		nX2 = m_pImageObject->GetWidth() - 1;
		nY2 = m_pImageObject->GetHeight() - 1;
		}
	CImagePointProcesses PointProcesses( m_pImageObject );
	BeginWaitCursor();
	PointProcesses.ReverseColors( nX1, nY1, nX2, nY2 );
	EndWaitCursor();

	InvalidateRect( NULL, FALSE );
	UpdateWindow();
	
}

void CImageViewView::OnPointprocessesViewhistogram() 
{

	if( m_pImageObject == NULL ) return;
	
	HGLOBAL hDib = m_pImageObject->GetDib();
	if( hDib == NULL ) return;

	unsigned char *pBits, *pPalette;
	pBits = (unsigned char *) ::GlobalLock( hDib );
	pBits += ( sizeof( BITMAPFILEHEADER ) + sizeof( BITMAPINFOHEADER ) );
	pPalette = pBits;
	pBits += m_pImageObject->GetPaletteBytes();


	CImagePointProcesses ImagePointProcesses( m_pImageObject );
	int *pHistogram = ImagePointProcesses.CreateHistogram( 0, 0,
		m_pImageObject->GetWidth() - 1,
		m_pImageObject->GetHeight() - 1,
		pBits, (RGBQUAD *) pPalette,
		m_pImageObject->WidthBytes( m_pImageObject->GetNumBits(),
			m_pImageObject->GetWidth() ) );
	if( pHistogram != NULL ){
		CViewHistogram ViewHistogram;
		ViewHistogram.m_pnHistogram = pHistogram;
		ViewHistogram.DoModal();
		delete [] pHistogram;
		}

}

void CImageViewView::OnAreaprocessesChangecontract() 
{

	if( m_pTracker == NULL || m_pImageObject == NULL ) return;

	int nX1 = m_pTracker->m_rect.left;
	int nY1 = m_pTracker->m_rect.top;
	int nX2 = m_pTracker->m_rect.right;
	int nY2 = m_pTracker->m_rect.bottom;

	if( nX1 < 0 ) nX1 = 0;
	if( nX1 > m_pImageObject->GetWidth() - 1 ) nX1 = m_pImageObject->GetWidth() - 1;
	if( nY1 < 0 ) nY1 = 0;
	if( nY1 > m_pImageObject->GetHeight() - 1 ) nY1 = m_pImageObject->GetHeight() - 1;
	if( nX2 < 0 ) nX2 = 0;
	if( nX2 > m_pImageObject->GetWidth() - 1 ) nX2 = m_pImageObject->GetWidth() - 1;
	if( nY2 < 0 ) nY2 = 0;
	if( nY2 > m_pImageObject->GetHeight() - 1 ) nY2 = m_pImageObject->GetHeight() - 1;

	if( !m_bCropBoxShowing ){
		nX1 = nY1 = 0;
		nX2 = m_pImageObject->GetWidth() - 1;
		nY2 = m_pImageObject->GetHeight() - 1;
		}

	CBrightness Brightness;
	strcpy( Brightness.m_szTitle, "Set Contrast" );
	strcpy( Brightness.m_szLabel, "Contrast" );
	if( Brightness.DoModal() != IDOK ) return;

	CImageAreaProcesses AreaProcesses( m_pImageObject );
	BeginWaitCursor();
	AreaProcesses.ChangeContrast( Brightness.m_nBrightness, nX1, nY1, nX2, nY2 );
	EndWaitCursor();

	InvalidateRect( NULL, FALSE );
	UpdateWindow();
	
}

void CImageViewView::OnAreaprocessesEdgeenhance() 
{

	if( m_pTracker == NULL || m_pImageObject == NULL ) return;

	int nX1 = m_pTracker->m_rect.left;
	int nY1 = m_pTracker->m_rect.top;
	int nX2 = m_pTracker->m_rect.right;
	int nY2 = m_pTracker->m_rect.bottom;

	if( nX1 < 0 ) nX1 = 0;
	if( nX1 > m_pImageObject->GetWidth() - 1 ) nX1 = m_pImageObject->GetWidth() - 1;
	if( nY1 < 0 ) nY1 = 0;
	if( nY1 > m_pImageObject->GetHeight() - 1 ) nY1 = m_pImageObject->GetHeight() - 1;
	if( nX2 < 0 ) nX2 = 0;
	if( nX2 > m_pImageObject->GetWidth() - 1 ) nX2 = m_pImageObject->GetWidth() - 1;
	if( nY2 < 0 ) nY2 = 0;
	if( nY2 > m_pImageObject->GetHeight() - 1 ) nY2 = m_pImageObject->GetHeight() - 1;

	if( !m_bCropBoxShowing ){
		nX1 = nY1 = 0;
		nX2 = m_pImageObject->GetWidth() - 1;
		nY2 = m_pImageObject->GetHeight() - 1;
		}
	CImageAreaProcesses AreaProcesses( m_pImageObject );
	BeginWaitCursor();
	AreaProcesses.EdgeEnhance( nX1, nY1, nX2, nY2 );
	EndWaitCursor();

	InvalidateRect( NULL, FALSE );
	UpdateWindow();
	
}

void CImageViewView::OnAreaprocessesEqualizecontrast() 
{

	if( m_pTracker == NULL || m_pImageObject == NULL ) return;

	int nX1 = m_pTracker->m_rect.left;
	int nY1 = m_pTracker->m_rect.top;
	int nX2 = m_pTracker->m_rect.right;
	int nY2 = m_pTracker->m_rect.bottom;

	if( nX1 < 0 ) nX1 = 0;
	if( nX1 > m_pImageObject->GetWidth() - 1 ) nX1 = m_pImageObject->GetWidth() - 1;
	if( nY1 < 0 ) nY1 = 0;
	if( nY1 > m_pImageObject->GetHeight() - 1 ) nY1 = m_pImageObject->GetHeight() - 1;
	if( nX2 < 0 ) nX2 = 0;
	if( nX2 > m_pImageObject->GetWidth() - 1 ) nX2 = m_pImageObject->GetWidth() - 1;
	if( nY2 < 0 ) nY2 = 0;
	if( nY2 > m_pImageObject->GetHeight() - 1 ) nY2 = m_pImageObject->GetHeight() - 1;

	if( !m_bCropBoxShowing ){
		nX1 = nY1 = 0;
		nX2 = m_pImageObject->GetWidth() - 1;
		nY2 = m_pImageObject->GetHeight() - 1;
		}
	CImageAreaProcesses AreaProcesses( m_pImageObject );
	BeginWaitCursor();
	AreaProcesses.EqualizeContrast( nX1, nY1, nX2, nY2 );
	EndWaitCursor();

	InvalidateRect( NULL, FALSE );
	UpdateWindow();
	
}

void CImageViewView::OnAreaprocessesHighpassfilter() 
{

	if( m_pTracker == NULL || m_pImageObject == NULL ) return;

	int nX1 = m_pTracker->m_rect.left;
	int nY1 = m_pTracker->m_rect.top;
	int nX2 = m_pTracker->m_rect.right;
	int nY2 = m_pTracker->m_rect.bottom;

	if( nX1 < 0 ) nX1 = 0;
	if( nX1 > m_pImageObject->GetWidth() - 1 ) nX1 = m_pImageObject->GetWidth() - 1;
	if( nY1 < 0 ) nY1 = 0;
	if( nY1 > m_pImageObject->GetHeight() - 1 ) nY1 = m_pImageObject->GetHeight() - 1;
	if( nX2 < 0 ) nX2 = 0;
	if( nX2 > m_pImageObject->GetWidth() - 1 ) nX2 = m_pImageObject->GetWidth() - 1;
	if( nY2 < 0 ) nY2 = 0;
	if( nY2 > m_pImageObject->GetHeight() - 1 ) nY2 = m_pImageObject->GetHeight() - 1;

	if( !m_bCropBoxShowing ){
		nX1 = nY1 = 0;
		nX2 = m_pImageObject->GetWidth() - 1;
		nY2 = m_pImageObject->GetHeight() - 1;
		}
	CImageAreaProcesses AreaProcesses( m_pImageObject );
	BeginWaitCursor();
	AreaProcesses.HighpassFilter( nX1, nY1, nX2, nY2 );
	EndWaitCursor();

	InvalidateRect( NULL, FALSE );
	UpdateWindow();
	
}

void CImageViewView::OnAreaprocessesLowpassfilter() 
{

	if( m_pTracker == NULL || m_pImageObject == NULL ) return;

	int nX1 = m_pTracker->m_rect.left;
	int nY1 = m_pTracker->m_rect.top;
	int nX2 = m_pTracker->m_rect.right;
	int nY2 = m_pTracker->m_rect.bottom;

	if( nX1 < 0 ) nX1 = 0;
	if( nX1 > m_pImageObject->GetWidth() - 1 ) nX1 = m_pImageObject->GetWidth() - 1;
	if( nY1 < 0 ) nY1 = 0;
	if( nY1 > m_pImageObject->GetHeight() - 1 ) nY1 = m_pImageObject->GetHeight() - 1;
	if( nX2 < 0 ) nX2 = 0;
	if( nX2 > m_pImageObject->GetWidth() - 1 ) nX2 = m_pImageObject->GetWidth() - 1;
	if( nY2 < 0 ) nY2 = 0;
	if( nY2 > m_pImageObject->GetHeight() - 1 ) nY2 = m_pImageObject->GetHeight() - 1;

	if( !m_bCropBoxShowing ){
		nX1 = nY1 = 0;
		nX2 = m_pImageObject->GetWidth() - 1;
		nY2 = m_pImageObject->GetHeight() - 1;
		}
	CImageAreaProcesses AreaProcesses( m_pImageObject );
	BeginWaitCursor();
	AreaProcesses.LowpassFilter( nX1, nY1, nX2, nY2 );
	EndWaitCursor();

	InvalidateRect( NULL, FALSE );
	UpdateWindow();
	
}

void CImageViewView::OnAreaprocessesMedianfilter() 
{

	if( m_pTracker == NULL || m_pImageObject == NULL ) return;

	int nX1 = m_pTracker->m_rect.left;
	int nY1 = m_pTracker->m_rect.top;
	int nX2 = m_pTracker->m_rect.right;
	int nY2 = m_pTracker->m_rect.bottom;

	if( nX1 < 0 ) nX1 = 0;
	if( nX1 > m_pImageObject->GetWidth() - 1 ) nX1 = m_pImageObject->GetWidth() - 1;
	if( nY1 < 0 ) nY1 = 0;
	if( nY1 > m_pImageObject->GetHeight() - 1 ) nY1 = m_pImageObject->GetHeight() - 1;
	if( nX2 < 0 ) nX2 = 0;
	if( nX2 > m_pImageObject->GetWidth() - 1 ) nX2 = m_pImageObject->GetWidth() - 1;
	if( nY2 < 0 ) nY2 = 0;
	if( nY2 > m_pImageObject->GetHeight() - 1 ) nY2 = m_pImageObject->GetHeight() - 1;

	if( !m_bCropBoxShowing ){
		nX1 = nY1 = 0;
		nX2 = m_pImageObject->GetWidth() - 1;
		nY2 = m_pImageObject->GetHeight() - 1;
		}
	CImageAreaProcesses AreaProcesses( m_pImageObject );
	BeginWaitCursor();
	AreaProcesses.MedianFilter( nX1, nY1, nX2, nY2 );
	EndWaitCursor();

	InvalidateRect( NULL, FALSE );
	UpdateWindow();
	
}

void CImageViewView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{

	InvalidateRect( NULL, FALSE );

	CScrollView::OnHScroll(nSBCode, nPos, pScrollBar);
}

void CImageViewView::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{

	InvalidateRect( NULL, FALSE );

	CScrollView::OnVScroll(nSBCode, nPos, pScrollBar);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -