📄 imageviewview.cpp
字号:
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 + -