亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transformshowview.cpp

?? 《精通 vc++ 圖像編程》的源代碼
?? CPP
字號:
// TransformShowView.cpp : implementation of the CTransformShowView class
//

#include "stdafx.h"
#include "TransformShow.h"
#include "MainFrm.h"
#include "Dib.h"
#include "CanvasDlg.h"
#include "ScaleDlg.h"
#include "RotateAngle.h"
#include "TransformShowDoc.h"
#include "TransformShowView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTransformShowView

IMPLEMENT_DYNCREATE(CTransformShowView, CScrollView)

BEGIN_MESSAGE_MAP(CTransformShowView, CScrollView)
	//{{AFX_MSG_MAP(CTransformShowView)
	ON_COMMAND(IDM_CANVASSIZE, OnCanvassize)
	ON_UPDATE_COMMAND_UI(IDM_CANVASSIZE, OnUpdateCanvassize)
	ON_COMMAND(IDM_CROP, OnCrop)
	ON_UPDATE_COMMAND_UI(IDM_CROP, OnUpdateCrop)
	ON_COMMAND(IDM_HMIRROR, OnHmirror)
	ON_UPDATE_COMMAND_UI(IDM_HMIRROR, OnUpdateHmirror)
	ON_COMMAND(IDM_ROTATE, OnRotate)
	ON_UPDATE_COMMAND_UI(IDM_ROTATE, OnUpdateRotate)
	ON_COMMAND(IDM_ROTATE180, OnRotate180)
	ON_UPDATE_COMMAND_UI(IDM_ROTATE180, OnUpdateRotate180)
	ON_COMMAND(IDM_ROTATE270, OnRotate270)
	ON_UPDATE_COMMAND_UI(IDM_ROTATE270, OnUpdateRotate270)
	ON_COMMAND(IDM_SCALE, OnScale)
	ON_UPDATE_COMMAND_UI(IDM_SCALE, OnUpdateScale)
	ON_COMMAND(IDM_VMIRROR, OnVmirror)
	ON_UPDATE_COMMAND_UI(IDM_VMIRROR, OnUpdateVmirror)
	ON_COMMAND(ID_EDIT_CUT, OnEditCut)
	ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut)
	ON_COMMAND(IDM_ROTATE_ANGLE, OnRotateAngle)
	ON_UPDATE_COMMAND_UI(IDM_ROTATE_ANGLE, OnUpdateRotateAngle)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_MESSAGE(WM_REALIZEPAL, OnRealizePal)
	ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTransformShowView construction/destruction

CTransformShowView::CTransformShowView()
{
	// TODO: add construction code here

}

CTransformShowView::~CTransformShowView()
{
}

BOOL CTransformShowView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CTransformShowView drawing

void CTransformShowView::OnDraw(CDC* pDC)
{
	CTransformShowDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (! pDoc->m_pDib->IsEmpty())
		pDoc->m_pDib->Display(pDC, 0, 0);
}

void CTransformShowView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();
	CTransformShowDoc* pDoc = GetDocument();

	CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);
	
	CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
	ASSERT_KINDOF(CMainFrame, pAppFrame);
	CRect rc;
	pAppFrame->GetClientRect(&rc);
	if (rc.Width() >= sizeTotal.cx && rc.Height() >= sizeTotal.cy &&
		(sizeTotal.cx>0 || sizeTotal.cy>0))
		ResizeParentToFit(FALSE);
}

/////////////////////////////////////////////////////////////////////////////
// CTransformShowView printing

BOOL CTransformShowView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CTransformShowView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CTransformShowView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CTransformShowView diagnostics

#ifdef _DEBUG
void CTransformShowView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CTransformShowView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

CTransformShowDoc* CTransformShowView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTransformShowDoc)));
	return (CTransformShowDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CTransformShowView message handlers

LRESULT CTransformShowView::OnRealizePal(WPARAM wParam, LPARAM lParam)
{
	ASSERT(wParam != NULL);
	CTransformShowDoc* pDoc = GetDocument();

	if (pDoc->m_pDib->IsEmpty())
		return 0L;  // must be a new document

	CPalette* pPal = pDoc->m_pDib->GetPalette();
	if (pPal != NULL)
	{
		CWnd* pAppFrame = AfxGetApp()->m_pMainWnd;

		CClientDC appDC(pAppFrame);
		// All views but one should be a background palette.
		// wParam contains a handle to the active view, so the SelectPalette
		// bForceBackground flag is FALSE only if wParam == m_hWnd (this view)
		CPalette* oldPalette = appDC.SelectPalette(pPal, ((HWND)wParam) != m_hWnd);

		if (oldPalette != NULL)
		{
			UINT nColorsChanged = appDC.RealizePalette();
			if (nColorsChanged > 0)
				GetDocument()->UpdateAllViews(NULL);
			appDC.SelectPalette(oldPalette, TRUE);
		}
		else
		{
			TRACE0("\tSelectPalette failed!\n");
		}
	}

	return 0L;
}

void CTransformShowView::OnCanvassize() 
{
	CTransformShowDoc* pDoc = GetDocument();
	CCanvasDlg canvasDlg((int)pDoc->m_pDib->GetWidth(), (int)pDoc->m_pDib->GetHeight(), this);

	if (canvasDlg.DoModal() == IDOK)
	{
		pDoc->m_pDib->ChangeCanvasSize(canvasDlg.m_nWidth, canvasDlg.m_nHeight, canvasDlg.m_nPosition);

		CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
		SetScrollSizes(MM_TEXT, sizeTotal);
		pDoc->SetModifiedFlag(TRUE);
		pDoc->UpdateAllViews(NULL);
	}	
}

void CTransformShowView::OnUpdateCanvassize(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
}

void CTransformShowView::OnCrop() 
{
	CTransformShowDoc* pDoc = GetDocument();
	int nWidth = pDoc->m_pDib->GetWidth();
	int nHeight = pDoc->m_pDib->GetHeight();
	pDoc->m_pDib->Crop(CRect(nWidth/4, nHeight/4, 3*nWidth/4, 3*nHeight/4));

	CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);
	pDoc->SetModifiedFlag(TRUE);
	pDoc->UpdateAllViews(NULL);
}

void CTransformShowView::OnUpdateCrop(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
}

void CTransformShowView::OnHmirror() 
{
	CTransformShowDoc* pDoc = GetDocument();
	pDoc->m_pDib->FlipHorz();

	CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);
	pDoc->SetModifiedFlag(TRUE);
	pDoc->UpdateAllViews(NULL);
}

void CTransformShowView::OnUpdateHmirror(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
}

void CTransformShowView::OnRotateAngle() 
{
	// TODO: Add your command handler code here
	CRotateAngle rotateDlg;

	if (rotateDlg.DoModal() == IDOK)
	{
		CTransformShowDoc* pDoc = GetDocument();
		pDoc->m_pDib->Rotate(rotateDlg.m_fAngle, RGB(0,0,0));

		CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
		SetScrollSizes(MM_TEXT, sizeTotal);
		pDoc->SetModifiedFlag(TRUE);
		pDoc->UpdateAllViews(NULL);
	}	
}

void CTransformShowView::OnUpdateRotateAngle(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());

}

void CTransformShowView::OnRotate() 
{
	CTransformShowDoc* pDoc = GetDocument();
	pDoc->m_pDib->Rotate90();

	CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);
	pDoc->SetModifiedFlag(TRUE);
	pDoc->UpdateAllViews(NULL);
}

void CTransformShowView::OnUpdateRotate(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
}

void CTransformShowView::OnRotate180() 
{
	CTransformShowDoc* pDoc = GetDocument();
	pDoc->m_pDib->Rotate180();

	CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);
	pDoc->SetModifiedFlag(TRUE);
	pDoc->UpdateAllViews(NULL);
}

void CTransformShowView::OnUpdateRotate180(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
}

void CTransformShowView::OnRotate270() 
{
	CTransformShowDoc* pDoc = GetDocument();
	pDoc->m_pDib->Rotate270();

	CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);
	pDoc->SetModifiedFlag(TRUE);
	pDoc->UpdateAllViews(NULL);
}

void CTransformShowView::OnUpdateRotate270(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
}

void CTransformShowView::OnScale() 
{
	CTransformShowDoc* pDoc = GetDocument();
	CScaleDlg scaleDlg(this);

	if (scaleDlg.DoModal() == IDOK)
	{
		pDoc->m_pDib->Zoom(scaleDlg.m_fRatioX, scaleDlg.m_fRatioY);

		CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
		SetScrollSizes(MM_TEXT, sizeTotal);
		pDoc->SetModifiedFlag(TRUE);
		pDoc->UpdateAllViews(NULL);
	}	
}

void CTransformShowView::OnUpdateScale(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
}

void CTransformShowView::OnVmirror() 
{
	CTransformShowDoc* pDoc = GetDocument();
	pDoc->m_pDib->FlipVert();

	CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);
	pDoc->SetModifiedFlag(TRUE);
	pDoc->UpdateAllViews(NULL);
}

void CTransformShowView::OnUpdateVmirror(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
}

void CTransformShowView::OnEditCut() 
{
	CTransformShowDoc* pDoc = GetDocument();
	int nWidth = pDoc->m_pDib->GetWidth();
	int nHeight = pDoc->m_pDib->GetHeight();
	pDoc->m_pDib->CutRect(CRect(nWidth/4, nHeight/4, 3*nWidth/4, 3*nHeight/4));

	CSize sizeTotal(pDoc->m_pDib->GetWidth(), pDoc->m_pDib->GetHeight());
	SetScrollSizes(MM_TEXT, sizeTotal);
	pDoc->SetModifiedFlag(TRUE);
	pDoc->UpdateAllViews(NULL);
}

void CTransformShowView::OnUpdateEditCut(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable(! GetDocument()->m_pDib->IsEmpty());
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线成人av网站| 99这里只有久久精品视频| 国产精品乱码妇女bbbb| 色综合激情五月| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲日本va午夜在线影院| 26uuu色噜噜精品一区| 欧美色爱综合网| 91国产免费看| 色呦呦一区二区三区| 99久久综合色| 99精品欧美一区二区蜜桃免费| 九九热在线视频观看这里只有精品| 日日摸夜夜添夜夜添精品视频| 亚洲特黄一级片| 国产精品剧情在线亚洲| 国产精品欧美一区二区三区| 久久蜜臀精品av| 国产日本欧美一区二区| 国产视频在线观看一区二区三区| 精品裸体舞一区二区三区| 欧美大白屁股肥臀xxxxxx| 欧美一区二区视频在线观看2020 | 国产一区视频在线看| 国产综合色精品一区二区三区| 久久精品国产第一区二区三区| 日本成人在线不卡视频| 久久国产夜色精品鲁鲁99| 琪琪一区二区三区| 不卡的av网站| 本田岬高潮一区二区三区| 色偷偷久久一区二区三区| 在线免费观看日本欧美| 欧美一区在线视频| 久久久亚洲综合| 中文字幕在线一区| 日韩精品一二区| 国产成人在线免费| 欧美人与禽zozo性伦| 26uuu欧美| 亚洲影院在线观看| 国产麻豆精品theporn| 色噜噜狠狠成人网p站| 欧美成人一区二区三区| 国产精品女上位| 开心九九激情九九欧美日韩精美视频电影| 国产一区二区三区日韩| 色婷婷综合激情| 中文成人av在线| 免费观看久久久4p| 色先锋资源久久综合| 精品福利二区三区| 日本伊人精品一区二区三区观看方式| 国产成人免费视频网站高清观看视频| 欧美综合色免费| 国产精品久久久久久久久免费樱桃 | 国产成人免费xxxxxxxx| 欧美吻胸吃奶大尺度电影 | 国产做a爰片久久毛片| 欧美性大战久久久久久久| 久久久精品日韩欧美| 午夜国产不卡在线观看视频| 成人午夜av在线| 精品久久久久久综合日本欧美| 水野朝阳av一区二区三区| 欧美日本一区二区三区四区| 国产精品麻豆99久久久久久| 国产麻豆视频精品| 精品国产髙清在线看国产毛片| 奇米888四色在线精品| 欧美日韩一区小说| 日韩av中文字幕一区二区| 欧美日本一区二区三区四区| 亚洲v精品v日韩v欧美v专区| 欧美色倩网站大全免费| 夜夜夜精品看看| 欧美电影影音先锋| 激情小说欧美图片| 欧美激情综合五月色丁香| 成人听书哪个软件好| 亚洲欧美在线aaa| 一本大道av一区二区在线播放| 一区二区高清在线| 欧美日韩国产一二三| 久久草av在线| 国产精品久久久久久久久久免费看| a亚洲天堂av| 午夜精品爽啪视频| 久久久久久电影| 91成人国产精品| 美女爽到高潮91| 亚洲精品视频自拍| 日韩视频免费观看高清在线视频| 欧美韩日一区二区三区| 懂色中文一区二区在线播放| 亚洲黄色免费网站| 久久久亚洲综合| 3d动漫精品啪啪| 91同城在线观看| 国产福利一区二区三区在线视频| 亚洲曰韩产成在线| 国产精品天天摸av网| 日韩欧美黄色影院| 欧美人狂配大交3d怪物一区| 成人av在线播放网站| 国产九色sp调教91| 日韩精品一卡二卡三卡四卡无卡| 久久久综合激的五月天| 欧美大片顶级少妇| 欧美一级片在线看| 欧美成人伊人久久综合网| 欧美亚洲一区二区在线| 成人福利视频在线| 成人激情动漫在线观看| 国内精品久久久久影院一蜜桃| 久久精品国产一区二区三| 天堂va蜜桃一区二区三区漫画版| 亚洲免费毛片网站| 亚洲另类在线制服丝袜| 一级日本不卡的影视| 一区二区三国产精华液| 一区二区三区四区五区视频在线观看| 中文字幕在线免费不卡| 国产拍欧美日韩视频二区| 国产精品无人区| 1024成人网| 亚洲网友自拍偷拍| 久久不见久久见中文字幕免费| 日本三级亚洲精品| 精品一区二区久久久| 高清日韩电视剧大全免费| 波多野结衣91| 欧美丝袜自拍制服另类| 91精品国产综合久久久蜜臀图片 | 亚洲与欧洲av电影| 日韩va欧美va亚洲va久久| 国内外成人在线| 99精品国产一区二区三区不卡| 91国偷自产一区二区开放时间 | 亚洲一区日韩精品中文字幕| 婷婷成人激情在线网| 国产98色在线|日韩| 色综合咪咪久久| 日韩久久精品一区| 中文字幕亚洲欧美在线不卡| 亚洲一区在线观看视频| 精品综合久久久久久8888| 91婷婷韩国欧美一区二区| 日韩一区二区三区视频| 综合久久一区二区三区| 久久国产尿小便嘘嘘| 91丨porny丨中文| 久久久久久久免费视频了| 亚洲电影一级黄| 91在线云播放| 国产精品成人午夜| 日韩av一区二| 成人免费毛片片v| 欧美午夜寂寞影院| 婷婷综合五月天| av成人老司机| 亚洲国产精品成人综合色在线婷婷| 天天做天天摸天天爽国产一区| 成人av网站免费观看| 久久九九影视网| 国产综合色视频| 久久久久久免费网| 国产综合久久久久久鬼色| 日韩欧美的一区| 麻豆高清免费国产一区| 欧美日韩一区三区四区| 亚洲第四色夜色| 3atv在线一区二区三区| 日韩**一区毛片| 精品国产成人系列| 麻豆91在线观看| 久久久久久久久久美女| 国产成都精品91一区二区三| 国产精品人人做人人爽人人添| 国产成都精品91一区二区三| 国产精品久久久久久久岛一牛影视| 99久久精品国产导航| 亚洲欧洲制服丝袜| 91精品国产91久久久久久最新毛片| 免费精品视频最新在线| 久久精品一区四区| 色婷婷久久99综合精品jk白丝 | 欧美视频完全免费看| 日韩成人免费看| 国产精品久久久久久久久晋中| 91成人在线免费观看| 亚洲综合激情小说| 日韩亚洲欧美综合| 成人天堂资源www在线| 午夜激情久久久| 国产婷婷色一区二区三区| 欧美性受xxxx黑人xyx性爽| 精品一区二区三区免费| 亚洲精品成a人| 久久你懂得1024|