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

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

?? mydipview.cpp

?? Visual C++、Matlab圖像處理與識別實用案例精選
?? CPP
字號:
// MyDIPView.cpp : implementation of the CMyDIPView class
//

#include "stdafx.h"
#include "MyDIP.h"

#include "MyDIPDoc.h"
#include "MyDIPView.h"

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

/*************************************************************************
   該函數用來水平移動DIB圖像。函數不會改變圖像的大小,移出的部分圖像
  將截去,空白部分用白色填充。
 ************************************************************************/

BOOL WINAPI TranslationDIB(LPSTR lpDIBBits, LONG lWidth, LONG lHeight, LONG lXOffset, LONG lYOffset)
{
	// 指向源圖像的指針
	LPSTR	lpSrc;
	
	// 指向要復制區域的指針
	LPSTR	lpDst;
	
	// 指向復制圖像的指針
	LPSTR	lpNewDIBBits;
	HLOCAL	hNewDIBBits;

	// 象素在新DIB中的坐標
	LONG	i;
	LONG	j;
	
	// 象素在源DIB中的坐標
	LONG	i0;
	LONG	j0;
	
	// 圖像每行的字節數
	LONG lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 暫時分配內存,以保存新圖像
	hNewDIBBits = LocalAlloc(LHND, lLineBytes * lHeight);
	if (hNewDIBBits == NULL)
	{
		// 分配內存失敗
		return FALSE;
	}
	
	// 鎖定內存
	lpNewDIBBits = (char * )LocalLock(hNewDIBBits);
	
	// 每行
	for(i = 0; i < lHeight; i++)
	{
		// 每列
		for(j = 0; j < lWidth; j++)
		{
			// 指向新DIB第i行,第j個象素的指針
			// 注意由于DIB中圖像第一行其實保存在最后一行的位置,因此lpDst
			// 值不是(char *)lpNewDIBBits + lLineBytes * i + j,而是
			// (char *)lpNewDIBBits + lLineBytes * (lHeight - 1 - i) + j
			lpDst = (char *)lpNewDIBBits + lLineBytes * (lHeight - 1 - i) + j;
			
			// 計算該象素在源DIB中的坐標
			i0 = i - lXOffset;
			j0 = j - lYOffset;
			
			// 判斷是否在源圖范圍內
			if( (j0 >= 0) && (j0 < lWidth) && (i0 >= 0) && (i0 < lHeight))
			{
				// 指向源DIB第i0行,第j0個象素的指針
				// 同樣要注意DIB上下倒置的問題
				lpSrc = (char *)lpDIBBits + lLineBytes * (lHeight - 1 - i0) + j0;
				
				// 復制象素
				*lpDst = *lpSrc;
			}
			else
			{
				// 對于源圖中沒有的象素,直接賦值為255
				* ((unsigned char*)lpDst) = 255;
			}
			
		}
	}
	
	// 復制平移后的圖像
	memcpy(lpDIBBits, lpNewDIBBits, lLineBytes * lHeight);
	
	// 釋放內存
	LocalUnlock(hNewDIBBits);
	LocalFree(hNewDIBBits);
	
	// 返回
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView

IMPLEMENT_DYNCREATE(CMyDIPView, CScrollView)

BEGIN_MESSAGE_MAP(CMyDIPView, CScrollView)
	//{{AFX_MSG_MAP(CMyDIPView)
	ON_COMMAND(ID_MENUITEM32778, OnMenuitem32778)
	ON_COMMAND(ID_MENUITEM32779, OnMenuitem32779)
	ON_COMMAND(ID_MENUITEM32780, OnMenuitem32780)
	ON_COMMAND(ID_MENUITEM32781, OnMenuitem32781)
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView construction/destruction

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

}

CMyDIPView::~CMyDIPView()
{
}

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

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView drawing

void CMyDIPView::OnDraw(CDC* pDC)
{   
	CMyDIPDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(pDoc->m_hDIB == NULL)
		return ;
	// TODO: add draw code for native data here
	int i,j;
    unsigned char *lpSrc;
	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
	int cxDIB = (int) ::DIBWidth(lpDIB);         // Size of DIB - x
	int cyDIB = (int) ::DIBHeight(lpDIB);        // Size of DIB - y
	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
	// 計算圖像每行的字節數
	long lLineBytes = WIDTHBYTES(cxDIB * 8);
	// 每行
	for(i = 0; i < cyDIB; i++)
	{
		// 每列
		for(j = 0; j < cxDIB; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j;
			// 計算新的灰度值
			//*(lpSrc) = BYTE(255-*lpSrc);
		}
	}
	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
	CRect rect(0,0,cxDIB,cyDIB), rcDIB(0,0,cxDIB,cyDIB);
	::PaintDIB(pDC->m_hDC, &rect, pDoc->m_hDIB, &rcDIB, pDoc->m_palDIB);
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView message handlers

void CMyDIPView::OnSize(UINT nType, int cx, int cy)
{
	CScrollView::OnSize(nType, cx, cy);
}

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

	SetScrollSizes(MM_TEXT, GetDocument()->m_sizeDoc);
}


//對比度拉伸
//DEL void CMyDIPView::OnMenuitem32777() 
//DEL {
//DEL 	
//DEL 	// 獲取文檔
//DEL 	CMyDIPDoc* pDoc = GetDocument();
//DEL 	int i,j;
//DEL 	int r1=60,r2=200;
//DEL 	double k=1.5;
//DEL     unsigned char *lpSrc;	
//DEL 	ASSERT_VALID(pDoc);
//DEL 	if(pDoc->m_hDIB == NULL)
//DEL 		return ;
//DEL 	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
//DEL 	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
//DEL 	int cxDIB = (int) ::DIBWidth(lpDIB);         // Size of DIB - x
//DEL 	int cyDIB = (int) ::DIBHeight(lpDIB);        // Size of DIB - y
//DEL 	long lLineBytes = WIDTHBYTES(cxDIB * 8);     // 計算圖像每行的字節數
//DEL 	// 每行
//DEL 	for(i = 0; i < cyDIB; i++)
//DEL 	{
//DEL 		// 每列
//DEL 		for(j = 0; j < cxDIB; j++)
//DEL 		{
//DEL 			// 指向DIB第i行,第j個象素的指針
//DEL 			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j;
//DEL 			// 計算新的灰度值
//DEL 			if(*lpSrc<r1) *lpSrc=BYTE(*lpSrc/k);
//DEL 			else if(*lpSrc<r2) *lpSrc= BYTE((*lpSrc-r1)*k+r1/k);
//DEL 			else *lpSrc=BYTE((*lpSrc-r2)/k+255-(255-r2)/k);
//DEL 		}
//DEL 	}
//DEL 	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
//DEL     Invalidate(TRUE);
//DEL }

void CMyDIPView::OnMenuitem32778() 
{
	// 平移位圖

	// 獲取文檔
	CMyDIPDoc* pDoc = GetDocument();
	
	// 指向DIB的指針
	LPSTR	lpDIB;

	// 指向DIB象素指針
	LPSTR   lpDIBBits;
	
	// 鎖定DIB
	lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
	
	// 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的平移,其它的可以類推)
	if (::DIBNumColors(lpDIB) != 256)
	{
		// 提示用戶
		MessageBox("目前只支持256色位圖的平移!", "系統提示" , MB_ICONINFORMATION | MB_OK);

		// 解除鎖定
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
		
		// 返回
		return;
	}
	
	LONG lXOffset;
	LONG lYOffset;
	
		
	// 平移量
	lXOffset = 0;
	lYOffset = -10;

	
	// 更改光標形狀
	BeginWaitCursor();

	// 找到DIB圖像象素起始位置
	lpDIBBits = ::FindDIBBits(lpDIB);
	
	// 調用TranslationDIB()函數平移DIB
	if (TranslationDIB(lpDIBBits, ::DIBWidth(lpDIB), ::DIBHeight(lpDIB), lXOffset, lYOffset))
	{
		
		// 設置臟標記
		pDoc->SetModifiedFlag(TRUE);

		// 更新視圖
		pDoc->UpdateAllViews(NULL);
	}
	else
	{
		// 提示用戶
		MessageBox("分配內存失敗!", "系統提示" , MB_ICONINFORMATION | MB_OK);
	}
	
	// 解除鎖定
	::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());

	// 恢復光標
	EndWaitCursor();
}



void CMyDIPView::OnMenuitem32779() 
{
	// 平移位圖

	// 獲取文檔
	CMyDIPDoc* pDoc = GetDocument();
	
	// 指向DIB的指針
	LPSTR	lpDIB;

	// 指向DIB象素指針
	LPSTR   lpDIBBits;
	
	// 鎖定DIB
	lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
	
	// 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的平移,其它的可以類推)
	if (::DIBNumColors(lpDIB) != 256)
	{
		// 提示用戶
		MessageBox("目前只支持256色位圖的平移!", "系統提示" , MB_ICONINFORMATION | MB_OK);

		// 解除鎖定
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
		
		// 返回
		return;
	}
	
	LONG lXOffset;
	LONG lYOffset;
	
		
	// 平移量
	lXOffset = 0;
	lYOffset = 10;

	
	// 更改光標形狀
	BeginWaitCursor();

	// 找到DIB圖像象素起始位置
	lpDIBBits = ::FindDIBBits(lpDIB);
	
	// 調用TranslationDIB()函數平移DIB
	if (TranslationDIB(lpDIBBits, ::DIBWidth(lpDIB), ::DIBHeight(lpDIB), lXOffset, lYOffset))
	{
		
		// 設置臟標記
		pDoc->SetModifiedFlag(TRUE);

		// 更新視圖
		pDoc->UpdateAllViews(NULL);
	}
	else
	{
		// 提示用戶
		MessageBox("分配內存失敗!", "系統提示" , MB_ICONINFORMATION | MB_OK);
	}
	
	// 解除鎖定
	::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());

	// 恢復光標
	EndWaitCursor();
}


void CMyDIPView::OnMenuitem32780() 
{
	// 平移位圖

	// 獲取文檔
	CMyDIPDoc* pDoc = GetDocument();
	
	// 指向DIB的指針
	LPSTR	lpDIB;

	// 指向DIB象素指針
	LPSTR   lpDIBBits;
	
	// 鎖定DIB
	lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
	
	// 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的平移,其它的可以類推)
	if (::DIBNumColors(lpDIB) != 256)
	{
		// 提示用戶
		MessageBox("目前只支持256色位圖的平移!", "系統提示" , MB_ICONINFORMATION | MB_OK);

		// 解除鎖定
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
		
		// 返回
		return;
	}
	
	LONG lXOffset;
	LONG lYOffset;
	
		
	// 平移量
	lXOffset = -10;
	lYOffset = 0;

	
	// 更改光標形狀
	BeginWaitCursor();

	// 找到DIB圖像象素起始位置
	lpDIBBits = ::FindDIBBits(lpDIB);
	
	// 調用TranslationDIB()函數平移DIB
	if (TranslationDIB(lpDIBBits, ::DIBWidth(lpDIB), ::DIBHeight(lpDIB), lXOffset, lYOffset))
	{
		
		// 設置臟標記
		pDoc->SetModifiedFlag(TRUE);

		// 更新視圖
		pDoc->UpdateAllViews(NULL);
	}
	else
	{
		// 提示用戶
		MessageBox("分配內存失敗!", "系統提示" , MB_ICONINFORMATION | MB_OK);
	}
	
	// 解除鎖定
	::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());

	// 恢復光標
	EndWaitCursor();
}


void CMyDIPView::OnMenuitem32781() 
{
	// 平移位圖

	// 獲取文檔
	CMyDIPDoc* pDoc = GetDocument();
	
	// 指向DIB的指針
	LPSTR	lpDIB;

	// 指向DIB象素指針
	LPSTR   lpDIBBits;
	
	// 鎖定DIB
	lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
	
	// 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的平移,其它的可以類推)
	if (::DIBNumColors(lpDIB) != 256)
	{
		// 提示用戶
		MessageBox("目前只支持256色位圖的平移!", "系統提示" , MB_ICONINFORMATION | MB_OK);

		// 解除鎖定
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
		
		// 返回
		return;
	}
	
	LONG lXOffset;
	LONG lYOffset;
	
		
	// 平移量
	lXOffset = 10;
	lYOffset = 0;

	
	// 更改光標形狀
	BeginWaitCursor();

	// 找到DIB圖像象素起始位置
	lpDIBBits = ::FindDIBBits(lpDIB);
	
	// 調用TranslationDIB()函數平移DIB
	if (TranslationDIB(lpDIBBits, ::DIBWidth(lpDIB), ::DIBHeight(lpDIB), lXOffset, lYOffset))
	{
		
		// 設置臟標記
		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清纯白嫩初高中在线观看 | 日韩一区二区三区四区| 欧美亚洲高清一区二区三区不卡| 日本黄色一区二区| 在线日韩av片| 欧美日韩成人一区二区| 91精品国产麻豆国产自产在线| 欧美日韩精品专区| 日韩视频免费直播| 26uuu久久天堂性欧美| 日韩欧美精品在线视频| 国产亚洲一二三区| 最新日韩在线视频| 亚洲成人资源网| 日韩av一级片| 国产一区不卡在线| 99久精品国产| 欧美久久久影院| 精品国产人成亚洲区| 国产欧美日韩另类视频免费观看| 亚洲天堂2014| 日韩av一级片| 国产美女一区二区三区| 91老师片黄在线观看| 91 com成人网| 国产精品色一区二区三区| 一区二区理论电影在线观看| 日韩精品成人一区二区三区| 国产美女一区二区三区| 色婷婷精品久久二区二区蜜臀av| 宅男在线国产精品| 国产精品久久久久7777按摩| 性做久久久久久免费观看欧美| 久久精品av麻豆的观看方式| av高清久久久| 日韩一级免费一区| 亚洲人成电影网站色mp4| 国产精品亚洲成人| 欧美精品在欧美一区二区少妇| 国产欧美精品日韩区二区麻豆天美 | 99久久久国产精品免费蜜臀| 欧美精品乱码久久久久久 | **性色生活片久久毛片| 日韩av在线发布| 91视视频在线直接观看在线看网页在线看 | 国产成人在线视频网址| 欧美日韩国产在线播放网站| 国产精品乱人伦| 看电影不卡的网站| 在线观看日韩电影| 欧美精品一区二区三区很污很色的| 欧美一区二区三区在线看| 91久久香蕉国产日韩欧美9色| 欧美刺激午夜性久久久久久久 | 日本高清成人免费播放| 99国产精品国产精品毛片| 日韩免费一区二区三区在线播放| 亚洲精品精品亚洲| 国产精品一区二区无线| 91精品国模一区二区三区| 亚洲另类一区二区| av在线免费不卡| 精品理论电影在线观看| 日本欧美韩国一区三区| 欧美视频在线观看一区二区| 国产精品国产馆在线真实露脸| 国产精品一区二区男女羞羞无遮挡| 欧美精品久久一区二区三区| 夜夜亚洲天天久久| 国产91对白在线观看九色| 欧美日韩亚洲综合在线| 亚洲国产精品av| 国产一区二区三区在线观看免费 | 精品视频免费在线| 亚洲精品精品亚洲| 日本精品免费观看高清观看| 欧美福利电影网| 国产精品久久久久毛片软件| 99re成人精品视频| 国产精品国产馆在线真实露脸| 99综合影院在线| 亚洲欧美aⅴ...| 欧美性xxxxxxxx| 国产三级三级三级精品8ⅰ区| 国产亚洲综合在线| 日韩高清一区二区| 欧美性生活一区| 一区二区免费视频| 777精品伊人久久久久大香线蕉| 亚洲va欧美va天堂v国产综合| 欧美色倩网站大全免费| 亚洲mv在线观看| 日韩一区二区三区三四区视频在线观看| jvid福利写真一区二区三区| 精品日韩欧美一区二区| 久久成人免费日本黄色| 国产人成亚洲第一网站在线播放| 国产乱码精品一区二区三区五月婷| 国产三级欧美三级日产三级99| 波多野结衣亚洲| 午夜视频一区在线观看| 久久先锋资源网| 欧美一区二区三区男人的天堂| 一区二区三区四区视频精品免费| 色哟哟一区二区| 夜色激情一区二区| 日韩欧美国产一区二区三区 | 国产精品久久综合| 在线观看一区二区视频| 久久国产夜色精品鲁鲁99| 国产精品欧美极品| 91精品午夜视频| 成人av网址在线观看| 五月综合激情网| 国产精品国产三级国产aⅴ中文 | 国产成人免费av在线| av一区二区不卡| 日韩专区在线视频| 国产日韩v精品一区二区| 日本乱人伦aⅴ精品| 久久电影网电视剧免费观看| 一区在线观看免费| 日韩亚洲电影在线| 色国产精品一区在线观看| 激情六月婷婷久久| 性做久久久久久免费观看欧美| 中文字幕av在线一区二区三区| 在线播放一区二区三区| 97久久久精品综合88久久| 久久精品国产精品青草| 亚洲成在人线在线播放| 国产精品美日韩| 精品少妇一区二区三区在线播放| 欧美日韩精品一区二区三区| 成人av高清在线| 国产精品一区二区免费不卡| 日本午夜精品视频在线观看 | 欧美色爱综合网| 99久久婷婷国产精品综合| 久久99精品视频| 七七婷婷婷婷精品国产| 亚洲18色成人| 亚洲成a天堂v人片| 亚洲精品欧美综合四区| 一区二区中文视频| 国产精品蜜臀av| 国产精品国产三级国产普通话蜜臀 | 日韩久久免费av| 欧美一区二区福利视频| 欧美日韩国产色站一区二区三区| 91国在线观看| 欧美在线一区二区| 欧美色图在线观看| 欧美色图一区二区三区| 欧洲另类一二三四区| 91久久线看在观草草青青| 在线视频综合导航| 欧美性色综合网| 69堂国产成人免费视频| 欧美一区二区三区的| 欧美成人一区二区三区在线观看| 欧美tickling挠脚心丨vk| 精品88久久久久88久久久| 国产欧美一区二区三区在线老狼 | 精品视频色一区| 欧美一区二区三区四区在线观看| 在线播放亚洲一区| 精品福利二区三区| 国产精品丝袜91| 亚洲精品一二三| 三级欧美在线一区| 韩国精品一区二区| 不卡影院免费观看| 在线视频欧美精品| 欧美一区二区女人| 国产亚洲1区2区3区| 一区二区视频免费在线观看| 婷婷激情综合网| 国产美女一区二区三区| 91在线观看免费视频| 91精品国产综合久久精品app| 久久精品男人的天堂| 亚洲午夜久久久久久久久久久| 久久精工是国产品牌吗| 99国产精品国产精品毛片| 欧美一区中文字幕| 亚洲欧洲av在线| 麻豆91在线播放免费| zzijzzij亚洲日本少妇熟睡| 欧美日本国产视频| 欧美国产97人人爽人人喊| 亚洲一区二区中文在线| 欧美色综合天天久久综合精品| 久久久噜噜噜久久人人看| 一区二区三区91| 成人动漫一区二区| 日韩欧美中文一区二区|