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

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

?? fretransview.cpp

?? 此代碼實現圖像正交變換,包括傅立葉變換,離散余弦變換,沃爾什變換
?? CPP
字號:
// FreTransView.cpp : implementation of the CFreTransView class
//

#include "stdafx.h"
#include "FreTrans.h"

#include "FreTransDoc.h"
#include "FreTransView.h"
#include "MainFrm.h"

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

/////////////////////////////////////////////////////////////////////////////
// CFreTransView

IMPLEMENT_DYNCREATE(CFreTransView, CScrollView)

BEGIN_MESSAGE_MAP(CFreTransView, CScrollView)
	//{{AFX_MSG_MAP(CFreTransView)
	ON_WM_ERASEBKGND()
	ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
	ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
	ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
	ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
	ON_COMMAND(ID_FREQ_DCT, OnFreqDct)
	ON_COMMAND(ID_FREQ_FOUR, OnFreqFour)
	ON_COMMAND(ID_FREQ_WALH, OnFreqWalh)
	//}}AFX_MSG_MAP
	// Standard printing commands
	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()

/////////////////////////////////////////////////////////////////////////////
// CFreTransView construction/destruction

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

}

CFreTransView::~CFreTransView()
{
}

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

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CFreTransView drawing

void CFreTransView::OnDraw(CDC* pDC)
{
	BeginWaitCursor();

	CFreTransDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	HDIB hDIB = pDoc->GetHDIB();
	if (hDIB != NULL)
	{
		LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
		int cxDIB = (int) pDoc->GetDibImage()->DIBWidth(lpDIB);
		int cyDIB = (int) pDoc->GetDibImage()->DIBHeight(lpDIB);

		::GlobalUnlock((HGLOBAL) hDIB);
		
		CRect rcDIB;
		rcDIB.top = rcDIB.left = 0;
		rcDIB.right = cxDIB;
		rcDIB.bottom = cyDIB;
		
		CRect rcDest;
		
		if (pDC->IsPrinting())
		{
			// 是打印,計算輸出圖像的位置和大小,以便符合頁面
			
			// 獲取打印頁面的水平寬度(象素)
			int cxPage = pDC->GetDeviceCaps(HORZRES);			
			// 獲取打印頁面的垂直高度(象素)
			int cyPage = pDC->GetDeviceCaps(VERTRES);			
			// 獲取打印機每英寸象素數
			int cxInch = pDC->GetDeviceCaps(LOGPIXELSX);
			int cyInch = pDC->GetDeviceCaps(LOGPIXELSY);
			
			// 計算打印圖像大小(縮放,根據頁面寬度調整圖像大小)
			rcDest.top = rcDest.left = 0;
			rcDest.bottom = (int)(((double)cyDIB * cxPage * cyInch)
					/ ((double)cxDIB * cxInch));
			rcDest.right = cxPage;
			
			// 計算打印圖像位置(垂直居中)
			int temp = cyPage - (rcDest.bottom - rcDest.top);
			rcDest.bottom += temp/2;
			rcDest.top += temp/2;
		}
		else   
		{
			// 不必縮放圖像
			rcDest = rcDIB;
		}
		
		pDoc->GetDibImage()->PaintDIB(pDC->m_hDC, &rcDest, pDoc->GetHDIB(),
			&rcDIB, pDoc->GetDocPalette());
	}
	
	EndWaitCursor();
}

void CFreTransView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();

	// TODO: calculate the total size of this view
	
}

/////////////////////////////////////////////////////////////////////////////
// CFreTransView printing

BOOL CFreTransView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// 設置總頁數為一。
	pInfo->SetMaxPage(1);

	return DoPreparePrinting(pInfo);
}

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

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

/////////////////////////////////////////////////////////////////////////////
// CFreTransView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CFreTransView message handlers

BOOL CFreTransView::OnEraseBkgnd(CDC* pDC) 
{
	// 主要是為了設置子窗體默認的背景色
	// 背景色由文檔成員變量m_refColorBKG指定

	CFreTransDoc* pDoc = GetDocument();
	CBrush brush(pDoc->m_refColorBKG);                                              
	CBrush* pOldBrush = pDC->SelectObject(&brush);
		
	CRect rectClip;
	pDC->GetClipBox(&rectClip);			// 獲取重繪區域	
	pDC->PatBlt(rectClip.left, rectClip.top, rectClip.Width(), 
		rectClip.Height(), PATCOPY);

	pDC->SelectObject(pOldBrush);                                                  

	return TRUE;
}

void CFreTransView::OnEditCopy() 
{
	// 復制當前圖像

	CFreTransDoc* pDoc = GetDocument();
	
	if (OpenClipboard())
	{
		BeginWaitCursor();
		EmptyClipboard();
		
		// 復制當前圖像到剪貼板
		SetClipboardData (CF_DIB, pDoc->GetDibImage()->
			CopyHandle((HANDLE) pDoc->GetHDIB()) );

		CloseClipboard();
		EndWaitCursor();
	}
}

void CFreTransView::OnUpdateEditCopy(CCmdUI* pCmdUI) 
{
	// 如果當前DIB對象不空,復制菜單項有效
	pCmdUI->Enable(GetDocument()->GetHDIB() != NULL);
}

void CFreTransView::OnEditPaste() 
{
	// 粘貼圖像
	
	HDIB hNewDIB = NULL;
	CFreTransDoc* pDoc = GetDocument();
	
	if (OpenClipboard())
	{
		BeginWaitCursor();

		// 讀取剪貼板中的圖像
		hNewDIB = (HDIB)pDoc->GetDibImage()->CopyHandle(::GetClipboardData(CF_DIB));

		CloseClipboard();
		
		if (hNewDIB != NULL)
		{
			pDoc->ReplaceHDIB(hNewDIB);		// 替換DIB,同時釋放舊DIB對象		
			pDoc->InitDIBData();			// 更新DIB大小和調色板		
			pDoc->SetModifiedFlag(TRUE);	// 設置臟標記	
			SetScrollSizes(MM_TEXT, pDoc->GetDocSize());	// 重新設置滾動視圖大小		
			OnDoRealize((WPARAM)m_hWnd,0);	// 實現新的調色板		
			pDoc->UpdateAllViews(NULL);		// 更新視圖
		}

		EndWaitCursor();
	}
}

void CFreTransView::OnUpdateEditPaste(CCmdUI* pCmdUI) 
{
	// 如果當前剪貼板中有DIB對象,粘貼菜單項有效
	pCmdUI->Enable(::IsClipboardFormatAvailable(CF_DIB));
}

LRESULT CFreTransView::OnDoRealize(WPARAM wParam, LPARAM)
{
	ASSERT(wParam != NULL);

	CFreTransDoc* pDoc = GetDocument();	
	if (pDoc->GetHDIB() == NULL)
	{
		return 0L;
	}
	
	CPalette* pPal = pDoc->GetDocPalette();
	if (pPal != NULL)
	{
		CMainFrame* pAppFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
		ASSERT_KINDOF(CMainFrame, pAppFrame);
		
		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)
			{
				pDoc->UpdateAllViews(NULL);
			}
			appDC.SelectPalette(oldPalette, TRUE);
		}
		else
		{
			TRACE0("\tCCh1_1View::OnPaletteChanged中調用SelectPalette()失敗!\n");
		}
	}
	
	return 0L;
}

void CFreTransView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) 
{
	CScrollView::OnActivateView(bActivate, pActivateView, pDeactiveView);

	if (bActivate)
	{
		ASSERT(pActivateView == this);
		OnDoRealize((WPARAM)m_hWnd, 0);   // same as SendMessage(WM_DOREALIZE);
	}
}

void CFreTransView::CalcWindowRect(LPRECT lpClientRect, UINT nAdjustType) 
{
	CScrollView::OnInitialUpdate();
	ASSERT(GetDocument() != NULL);
	
	SetScrollSizes(MM_TEXT, GetDocument()->GetDocSize());
}

void CFreTransView::OnFreqDct() 
{
	// 圖像離散余弦變換
	
	CFreTransDoc* pDoc = GetDocument();
		
	LPSTR	lpDIB;				// 指向DIB的指針	
	LPSTR    lpDIBBits;			// 指向DIB象素指針
	lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
	
	// 找到DIB圖像象素起始位置
	lpDIBBits = pDoc->GetDibImage()->FindDIBBits(lpDIB);
	
	// 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的離散余弦變換,其它的可以類推)
	if (pDoc->GetDibImage()->DIBNumColors(lpDIB) != 256)
	{
		MessageBox("目前只支持256色位圖的離散余弦變換!", "系統提示" ,
			MB_ICONINFORMATION | MB_OK);
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());

		return;
	}

	BeginWaitCursor();
	
	// 調用DIBDct()函數進行離散余弦變換
	if (pDoc->GetDibImage()->DIBDct(lpDIBBits,pDoc->GetDibImage()->DIBWidth(lpDIB), 
		pDoc->GetDibImage()->DIBHeight(lpDIB)))
	{		
		pDoc->SetModifiedFlag(TRUE);		// 設置臟標記		
		pDoc->UpdateAllViews(NULL);			// 更新視圖
	}
	else
	{
		MessageBox("分配內存失敗!", "系統提示" , MB_ICONINFORMATION | MB_OK);
	}

	::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
	EndWaitCursor();
}

void CFreTransView::OnFreqFour() 
{
	// 圖像付立葉變換
	
	CFreTransDoc* pDoc = GetDocument();
		
	LPSTR	lpDIB;				// 指向DIB的指針	
	LPSTR    lpDIBBits;			// 指向DIB象素指針
	lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
	
	// 找到DIB圖像象素起始位置
	lpDIBBits = pDoc->GetDibImage()->FindDIBBits(lpDIB);
	
	// 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的付立葉變換,其它的可以類推)
	if (pDoc->GetDibImage()->DIBNumColors(lpDIB) != 256)
	{
		MessageBox("目前只支持256色位圖的付立葉變換!", "系統提示" ,
			MB_ICONINFORMATION | MB_OK);
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());

		return;
	}
	
	BeginWaitCursor();
	
	// 調用Fourier()函數進行付立葉變換
	if (pDoc->GetDibImage()->Fourier(lpDIBBits,pDoc->GetDibImage()->DIBWidth(lpDIB), 
		pDoc->GetDibImage()->DIBHeight(lpDIB)))
	{
		pDoc->SetModifiedFlag(TRUE);		// 設置臟標記		
		pDoc->UpdateAllViews(NULL);			// 更新視圖
	}
	else
	{
		MessageBox("分配內存失敗!", "系統提示" , MB_ICONINFORMATION | MB_OK);
	}
	
	::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
	EndWaitCursor();
}

void CFreTransView::OnFreqWalh() 
{
	// 圖像沃爾什-哈達瑪變換

	CFreTransDoc* pDoc = GetDocument();
		
	LPSTR	lpDIB;				// 指向DIB的指針	
	LPSTR    lpDIBBits;			// 指向DIB象素指針
	lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
	
	// 找到DIB圖像象素起始位置
	lpDIBBits = pDoc->GetDibImage()->FindDIBBits(lpDIB);
	
	// 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的沃爾什-哈達瑪變換,
	// 其它的可以類推)
	if (pDoc->GetDibImage()->DIBNumColors(lpDIB) != 256)
	{
		MessageBox("目前只支持256色位圖的沃爾什-哈達瑪變換!", "系統提示" ,
			MB_ICONINFORMATION | MB_OK);
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());

		return;
	}
	
	BeginWaitCursor();
	
	// 調用DIBWalsh()或者DIBWalsh1()函數進行變換
	if (pDoc->GetDibImage()->DIBWalsh1(lpDIBBits,pDoc->GetDibImage()->DIBWidth(lpDIB), 
		pDoc->GetDibImage()->DIBHeight(lpDIB)))
	{
		pDoc->SetModifiedFlag(TRUE);		// 設置臟標記		
		pDoc->UpdateAllViews(NULL);			// 更新視圖
	}
	else
	{
		MessageBox("分配內存失敗!", "系統提示" , MB_ICONINFORMATION | MB_OK);
	}

	::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
	EndWaitCursor();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品1区2区| 亚洲男人的天堂av| 亚洲三级在线播放| 蜜桃视频一区二区三区在线观看 | 精品美女一区二区| 国产欧美日韩在线| 日韩在线观看一区二区| k8久久久一区二区三区| 久久久青草青青国产亚洲免观| 一区二区三区 在线观看视频| 国产一区二区影院| 日韩一区二区三区视频| 亚洲精品国产一区二区精华液| 国产盗摄女厕一区二区三区| 欧美片在线播放| 亚洲美女免费在线| 99精品黄色片免费大全| 久久久美女毛片| 奇米色一区二区三区四区| 精品视频1区2区3区| 自拍av一区二区三区| 成人黄色一级视频| 国产精品久久三| 盗摄精品av一区二区三区| 久久久激情视频| 国产成人免费视频网站高清观看视频 | 蜜臀99久久精品久久久久久软件| 欧美在线制服丝袜| 一区二区三区在线免费视频 | 自拍偷拍欧美精品| 不卡av在线网| 亚洲日韩欧美一区二区在线| 成人丝袜高跟foot| 国产精品福利电影一区二区三区四区| 精品一区二区国语对白| 精品毛片乱码1区2区3区| 免费人成在线不卡| 26uuu另类欧美| 福利一区福利二区| 中文字幕制服丝袜一区二区三区| 成人手机电影网| 欧美国产一区二区| 色婷婷av一区二区三区gif | 91无套直看片红桃| 中文字幕中文字幕一区| 在线免费观看日韩欧美| 亚洲午夜羞羞片| 91麻豆精品91久久久久同性| 日韩av网站在线观看| 久久亚洲一级片| 成人avav影音| 性感美女久久精品| 精品成人一区二区三区四区| 国产成人av网站| 亚洲视频一区二区在线| 欧美日韩午夜影院| 黄色日韩三级电影| 中文字幕在线观看不卡视频| 91精品福利视频| 狠狠色狠狠色合久久伊人| 国产精品久久久久久久蜜臀| 91国偷自产一区二区使用方法| 青椒成人免费视频| 日本一区二区三区高清不卡| 在线视频综合导航| 美女高潮久久久| 亚洲视频一二区| 日韩视频不卡中文| 99视频热这里只有精品免费| 视频一区免费在线观看| 欧美激情一区二区三区| 欧美午夜不卡视频| 国产成人精品aa毛片| 午夜精品爽啪视频| 国产精品国产三级国产| 日韩一区二区三区电影 | 狠狠色丁香久久婷婷综合丁香| 国产精品久久久久影院色老大| 色综合激情五月| 国产精品亚洲成人| 日韩在线一二三区| 亚洲精品你懂的| 日本一区二区三区dvd视频在线| 欧美亚洲高清一区| 99久久综合99久久综合网站| 日韩综合小视频| 亚洲精品国产成人久久av盗摄| 久久久九九九九| 在线欧美日韩精品| 欧美日韩在线一区二区| 国产不卡在线播放| 激情图区综合网| 日韩高清在线电影| 亚洲美女一区二区三区| 2023国产精品自拍| 日韩女优制服丝袜电影| 欧美精品久久天天躁| yourporn久久国产精品| 成人在线一区二区三区| 激情综合网最新| 青草av.久久免费一区| 亚洲gay无套男同| 一区二区三区加勒比av| 中文字幕色av一区二区三区| 久久久久国产一区二区三区四区| 91精品国产丝袜白色高跟鞋| 欧美日韩国产区一| 欧美撒尿777hd撒尿| 在线精品视频免费观看| 成人午夜电影久久影院| 国产精品91xxx| 国产精品一区二区91| 国产乱一区二区| 国产精品影视在线观看| 精品一区二区免费| 久久超碰97中文字幕| 久久精品国产在热久久| 黄色日韩三级电影| 国产很黄免费观看久久| 成人看片黄a免费看在线| 国产精品一区二区久久不卡| 国产精品91一区二区| 懂色一区二区三区免费观看| 国产suv精品一区二区883| 国产成人亚洲综合色影视| 国产.欧美.日韩| 97aⅴ精品视频一二三区| 色婷婷精品久久二区二区蜜臀av| 在线免费av一区| 久久综合色一综合色88| 久久综合九色综合97_久久久| 2014亚洲片线观看视频免费| 欧美国产精品专区| 亚洲精品你懂的| 欧美aaaaaa午夜精品| 国产伦精一区二区三区| av成人动漫在线观看| 精品视频资源站| 精品免费日韩av| 国产精品久久久久久久久免费桃花| 亚洲精选免费视频| 日本欧美韩国一区三区| 成人性视频网站| 欧美色爱综合网| 久久久91精品国产一区二区三区| 中文字幕欧美一| 水野朝阳av一区二区三区| 麻豆精品精品国产自在97香蕉| 粉嫩13p一区二区三区| 91福利视频网站| 精品日韩成人av| 一区二区三区精密机械公司| 老司机精品视频导航| www.日韩av| 欧美一区二区网站| 日韩美女久久久| 开心九九激情九九欧美日韩精美视频电影| 国产不卡视频在线播放| 欧美日韩免费在线视频| 日本一区二区三区电影| 视频一区二区三区入口| 波多野结衣中文字幕一区二区三区| 欧美日韩中文字幕一区| 国产精品三级电影| 免费成人在线观看视频| 一道本成人在线| 国产欧美日韩精品一区| 奇米777欧美一区二区| 欧美亚洲综合久久| 中文字幕一区不卡| 国产精品亚洲第一区在线暖暖韩国| 欧美日韩久久久一区| 欧美国产日韩在线观看| 久久精品国产99| 欧美三级日本三级少妇99| 国产人妖乱国产精品人妖| 麻豆专区一区二区三区四区五区| 欧美亚洲国产bt| 亚洲欧美另类久久久精品| 国产传媒一区在线| 久久色在线视频| 另类中文字幕网| 日韩一区二区在线观看视频| 一区二区三区精品在线观看| 成人午夜激情视频| 久久麻豆一区二区| 麻豆国产一区二区| 7777精品伊人久久久大香线蕉完整版| 亚洲欧美国产77777| 国产乱码精品一区二区三区五月婷 | 欧美性xxxxxx少妇| 国产精品色哟哟| 国产成人一级电影| 国产女同互慰高潮91漫画| 国产高清一区日本| 久久精品人人爽人人爽| 欧美中文字幕亚洲一区二区va在线| 国产精品二三区| 91欧美激情一区二区三区成人| 亚洲视频一二三|