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

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

?? dlgintensity.cpp

?? 《VC++數字圖像處理》人民郵電大學出版社 何斌 馬天予 王遠堅 朱紅蓮
?? CPP
字號:
// DlgIntensity.cpp : implementation file
//

#include "stdafx.h"
#include "ch1_1.h"
#include "DlgIntensity.h"
#include "DIBAPI.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDlgIntensity dialog


CDlgIntensity::CDlgIntensity(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgIntensity::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgIntensity)
	m_iLowGray = 0;
	m_iUpGray = 0;
	//}}AFX_DATA_INIT
}


void CDlgIntensity::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgIntensity)
	DDX_Text(pDX, IDC_EDIT_LowGray, m_iLowGray);
	DDV_MinMaxInt(pDX, m_iLowGray, 0, 255);
	DDX_Text(pDX, IDC_EDIT_UpGray, m_iUpGray);
	DDV_MinMaxInt(pDX, m_iUpGray, 0, 255);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgIntensity, CDialog)
	//{{AFX_MSG_MAP(CDlgIntensity)
	ON_WM_PAINT()
	ON_EN_KILLFOCUS(IDC_EDIT_LowGray, OnKillfocusEDITLowGray)
	ON_EN_KILLFOCUS(IDC_EDIT_UpGray, OnKillfocusEDITUpGray)
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgIntensity message handlers

BOOL CDlgIntensity::OnInitDialog() 
{
	// 指向源圖像象素的指針
	unsigned char * lpSrc;
	
	// 循環變量
	LONG i;
	LONG j;
	
	// 調用默認OnInitDialog函數
	CDialog::OnInitDialog();
	
	// 獲取繪制直方圖的標簽
	CWnd* pWnd = GetDlgItem(IDC_COORD);
	
	// 計算接受鼠標事件的有效區域
	pWnd->GetClientRect(m_MouseRect);
	pWnd->ClientToScreen(&m_MouseRect);
	
	CRect rect;
	GetClientRect(rect);
	ClientToScreen(&rect);
	
	m_MouseRect.top -= rect.top;
	m_MouseRect.left -= rect.left;
	
	// 設置接受鼠標事件的有效區域
	m_MouseRect.top += 25;
	m_MouseRect.left += 10;
	m_MouseRect.bottom = m_MouseRect.top + 255;
	m_MouseRect.right = m_MouseRect.left + 256;
	
	// 重置計數為0
	for (i = 0; i < 256; i ++)
	{
		// 清零
		m_lCount[i] = 0;
	}
	
	// 圖像每行的字節數
	LONG lLineBytes;
	
	// 計算圖像每行的字節數
	lLineBytes = WIDTHBYTES(m_lWidth * 8);
	
	// 計算各個灰度值的計數
	for (i = 0; i < m_lHeight; i ++)
	{
		for (j = 0; j < m_lWidth; j ++)
		{
			lpSrc = (unsigned char *)m_lpDIBBits + lLineBytes * i + j;
			
			// 計數加1
			m_lCount[*(lpSrc)]++;
		}
	}
	
	// 初始化拖動狀態
	m_iIsDraging = 0;
	
	// 返回TRUE
	return TRUE;
}

void CDlgIntensity::OnKillfocusEDITLowGray() 
{
	// 保存變動(控件中數值保存到成員變量中)
	UpdateData(TRUE);
	
	// 判斷是否下限超過上限
	if (m_iLowGray > m_iUpGray)
	{
		// 互換
		int iTemp = m_iLowGray;
		m_iLowGray = m_iUpGray;
		m_iUpGray = iTemp;
		
		// 更新(成員變量中數值保存到控件中)
		UpdateData(FALSE);
	}
	
	// 重繪直方圖
	InvalidateRect(m_MouseRect, TRUE);
}

void CDlgIntensity::OnKillfocusEDITUpGray() 
{
	// 保存變動
	UpdateData(TRUE);
	
	// 判斷是否下限超過上限
	if (m_iLowGray > m_iUpGray)
	{
		// 互換
		int iTemp = m_iLowGray;
		m_iLowGray = m_iUpGray;
		m_iUpGray = iTemp;
		
		// 更新
		UpdateData(FALSE);
	}
	
	// 重繪直方圖
	InvalidateRect(m_MouseRect, TRUE);
	
}

void CDlgIntensity::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// 當用戶單擊鼠標左鍵開始拖動
	
	// 判斷是否在接受鼠標事件的有效區域中
	if(m_MouseRect.PtInRect(point))
	{
		if (point.x == (m_MouseRect.left + m_iLowGray))
		{
			
			// 設置拖動狀態1,拖動下限
			m_iIsDraging = 1;
			
			// 更改光標
			::SetCursor(::LoadCursor(NULL, IDC_SIZEWE));
		}
		else if (point.x == (m_MouseRect.left + m_iUpGray))
		{
			
			// 設置拖動狀態為2,拖動上限
			m_iIsDraging = 2;
			
			// 更改光標
			::SetCursor(::LoadCursor(NULL, IDC_SIZEWE));
		}
	}
	
	// 默認單擊鼠標左鍵處理事件
	CDialog::OnLButtonDown(nFlags, point);
}

void CDlgIntensity::OnMouseMove(UINT nFlags, CPoint point) 
{
	
	// 判斷是否在接受鼠標事件的有效區域中
	if(m_MouseRect.PtInRect(point))
	{
		// 判斷是否正在拖動
		if (m_iIsDraging != 0)
		{
			// 判斷正在拖動上限還是下限
			if (m_iIsDraging == 1)
			{
				// 判斷是否下限<上限
				if (point.x - m_MouseRect.left < m_iUpGray)
				{
					// 更改下限
					m_iLowGray = point.x - m_MouseRect.left;
				}
				else
				{
					// 下限拖過上限,設置為上限-1
					m_iLowGray = m_iUpGray - 1;
					
					// 重設鼠標位置
					point.x = m_MouseRect.left + m_iUpGray - 1;
				}
			}
			else
			{
				// 正在拖動上限
				
				// 判斷是否上限>下限
				if (point.x - m_MouseRect.left > m_iLowGray)
				{
					// 更改下限
					m_iUpGray = point.x - m_MouseRect.left;
				}
				else
				{
					// 下限拖過上限,設置為下限+1
					m_iUpGray = m_iLowGray + 1;
					
					// 重設鼠標位置
					point.x = m_MouseRect.left + m_iLowGray + 1;
				}
			}
			
			// 更改光標
			::SetCursor(::LoadCursor(NULL, IDC_SIZEWE));
			
			// 更新
			UpdateData(FALSE);
			
			// 重繪直方圖
			InvalidateRect(m_MouseRect, TRUE);
		}
		else if (point.x == (m_MouseRect.left + m_iLowGray) || point.x == (m_MouseRect.left + m_iUpGray))
		{
			// 更改光標
			::SetCursor(::LoadCursor(NULL, IDC_SIZEWE));
		}
	}
	
	// 默認鼠標移動處理事件
	CDialog::OnMouseMove(nFlags, point);
}

void CDlgIntensity::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// 當用戶釋放鼠標左鍵停止拖動
	if (m_iIsDraging != 0)
	{
		// 重置拖動狀態
		m_iIsDraging = 0;
	}
	
	// 默認釋放鼠標左鍵處理事件
	CDialog::OnLButtonUp(nFlags, point);
}

void CDlgIntensity::OnPaint() 
{
	// 字符串
	CString str;
	
	// 循環變量
	LONG i;
	
	// 最大計數
	LONG lMaxCount = 0;
	
	// 設備上下文
	CPaintDC dc(this);
	
	// 獲取繪制坐標的文本框
	CWnd* pWnd = GetDlgItem(IDC_COORD);
	
	// 指針
	CDC* pDC = pWnd->GetDC();
	pWnd->Invalidate();
	pWnd->UpdateWindow();
	
	pDC->Rectangle(0,0,330,300);
	
	// 創建畫筆對象
	CPen* pPenRed = new CPen;
	
	// 紅色畫筆
	pPenRed->CreatePen(PS_SOLID,1,RGB(255,0,0));
	
	// 創建畫筆對象
	CPen* pPenBlue = new CPen;
	
	// 藍色畫筆
	pPenBlue->CreatePen(PS_SOLID,1,RGB(0,0, 255));
	
	// 創建畫筆對象
	CPen* pPenGreen = new CPen;
	
	// 綠色畫筆
	pPenGreen->CreatePen(PS_DOT,1,RGB(0,255,0));
	
	// 選中當前紅色畫筆,并保存以前的畫筆
	CGdiObject* pOldPen = pDC->SelectObject(pPenRed);
	
	// 繪制坐標軸
	pDC->MoveTo(10,10);
	
	// 垂直軸
	pDC->LineTo(10,280);
	
	// 水平軸
	pDC->LineTo(320,280);
	
	// 寫X軸刻度值
	str.Format("0");
	pDC->TextOut(10, 283, str);
	str.Format("50");
	pDC->TextOut(60, 283, str);
	str.Format("100");
	pDC->TextOut(110, 283, str);
	str.Format("150");
	pDC->TextOut(160, 283, str);
	str.Format("200");
	pDC->TextOut(210, 283, str);
	str.Format("255");
	pDC->TextOut(265, 283, str);
	
	// 繪制X軸刻度
	for (i = 0; i < 256; i += 5)
	{
		if ((i & 1) == 0)
		{
			// 10的倍數
			pDC->MoveTo(i + 10, 280);
			pDC->LineTo(i + 10, 284);
		}
		else
		{
			// 10的倍數
			pDC->MoveTo(i + 10, 280);
			pDC->LineTo(i + 10, 282);
		}
	}
	
	// 繪制X軸箭頭
	pDC->MoveTo(315,275);
	pDC->LineTo(320,280);
	pDC->LineTo(315,285);
	
	// 繪制X軸箭頭
	pDC->MoveTo(10,10);
	pDC->LineTo(5,15);
	pDC->MoveTo(10,10);
	pDC->LineTo(15,15);
	
	// 計算最大計數值
	for (i = m_iLowGray; i <= m_iUpGray; i ++)
	{
		// 判斷是否大于當前最大值
		if (m_lCount[i] > lMaxCount)
		{
			// 更新最大值
			lMaxCount = m_lCount[i];
		}
	}
	
	// 輸出最大計數值
	pDC->MoveTo(10, 25);
	pDC->LineTo(14, 25);
	str.Format("%d", lMaxCount);
	pDC->TextOut(11, 26, str);
	
	// 更改成綠色畫筆
	pDC->SelectObject(pPenGreen);	
	
	// 繪制窗口上下限
	pDC->MoveTo(m_iLowGray + 10, 25);
	pDC->LineTo(m_iLowGray + 10, 280);
	
	pDC->MoveTo(m_iUpGray + 10, 25);
	pDC->LineTo(m_iUpGray + 10, 280);
	
	// 更改成藍色畫筆
	pDC->SelectObject(pPenBlue);	
	
	// 判斷是否有計數
	if (lMaxCount > 0)
	{
		// 繪制直方圖
		for (i = m_iLowGray; i <= m_iUpGray; i ++)
		{
			pDC->MoveTo(i + 10, 280);
			pDC->LineTo(i + 10, 281 - (int) (m_lCount[i] * 256 / lMaxCount));
		}
	}
	
	// 恢復以前的畫筆
	pDC->SelectObject(pOldPen);	
	
	// 刪除新的畫筆
	delete pPenRed;
	delete pPenBlue;
	delete pPenGreen;
	
}

void CDlgIntensity::OnOK() 
{
	
	// 判斷是否下限超過上限
	if (m_iLowGray > m_iUpGray)
	{
		// 互換
		int iTemp = m_iLowGray;
		m_iLowGray = m_iUpGray;
		m_iUpGray = iTemp;
	}
	
	// 返回
	CDialog::OnOK();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区中文字幕电影| 99国产精品久| 欧美一区二区三区喷汁尤物| 日韩专区欧美专区| 在线区一区二视频| 夜夜爽夜夜爽精品视频| 在线视频一区二区免费| 亚洲男同性视频| 在线精品观看国产| 丝袜国产日韩另类美女| 欧美美女视频在线观看| 美女在线一区二区| 久久婷婷一区二区三区| 成人午夜在线视频| 一区二区三区四区蜜桃| 欧美日本视频在线| 国产一区二区剧情av在线| 国产欧美日韩亚州综合| 色婷婷久久99综合精品jk白丝| 亚洲精品福利视频网站| 欧美tickling网站挠脚心| 国产91高潮流白浆在线麻豆 | 成人午夜精品一区二区三区| 亚洲少妇屁股交4| 日韩午夜激情av| 91毛片在线观看| 六月丁香婷婷色狠狠久久| 自拍偷拍亚洲欧美日韩| 国产一区啦啦啦在线观看| 国产精品福利一区二区| 日韩一区二区在线看| 91极品美女在线| 国产精品1区2区3区在线观看| 亚洲国产美国国产综合一区二区| 久久久久久久久久看片| 777xxx欧美| 色视频成人在线观看免| 国产一级精品在线| 性做久久久久久免费观看| 国产精品成人网| 久久综合色播五月| 欧美久久高跟鞋激| 欧美性色黄大片| 色婷婷久久综合| 99re热这里只有精品免费视频| 国产精品白丝jk黑袜喷水| 另类小说综合欧美亚洲| 日韩高清在线观看| 天天色 色综合| 蜜桃久久精品一区二区| 美女免费视频一区二区| 蜜臀av一区二区在线观看| 午夜伊人狠狠久久| 青青草视频一区| 国产在线国偷精品免费看| 国产福利精品导航| 波多野结衣精品在线| 91久久一区二区| 欧美三区在线观看| 精品久久久久久综合日本欧美| 精品精品国产高清a毛片牛牛 | 91影院在线观看| 日本久久精品电影| 欧美美女直播网站| 久久精品一区蜜桃臀影院| 国产日产欧美精品一区二区三区| 国产精品免费网站在线观看| 1024成人网| 卡一卡二国产精品| 成人小视频在线观看| 欧美日韩五月天| 国产三级三级三级精品8ⅰ区| 亚洲欧美另类久久久精品| 美女视频网站久久| 成人免费视频视频| 欧美夫妻性生活| 一区二区三区免费| 国产一区二区美女诱惑| 欧美体内she精高潮| 国产人久久人人人人爽| 秋霞午夜av一区二区三区| 色综合色综合色综合色综合色综合| 欧美日韩一区二区三区在线看| 国产精品视频一二三| 美女脱光内衣内裤视频久久网站 | 久久久精品国产免费观看同学| 亚洲国产裸拍裸体视频在线观看乱了| 国产在线一区二区综合免费视频| 不卡一区二区三区四区| 欧美成人vr18sexvr| 五月天激情小说综合| 91福利国产精品| 自拍偷拍国产亚洲| 成人久久久精品乱码一区二区三区 | 蜜臀av一区二区在线免费观看| 日本韩国精品在线| 亚洲色图欧洲色图| 在线观看亚洲一区| 一区二区三区蜜桃| 欧美午夜精品久久久久久孕妇 | 国产精品久久久久影院色老大 | 成人精品在线视频观看| 国产清纯在线一区二区www| 国产精品99久久久久久宅男| 久久久久久久电影| 风间由美一区二区av101| 国产亚洲人成网站| 91亚洲午夜精品久久久久久| 亚洲色大成网站www久久九九| 色哟哟在线观看一区二区三区| 一区二区在线电影| 7777精品伊人久久久大香线蕉的| 奇米色777欧美一区二区| 国产亚洲午夜高清国产拍精品 | 久久美女高清视频| www.一区二区| 日本成人在线一区| 一区二区三区精品视频在线| 欧美精品123区| 国产.精品.日韩.另类.中文.在线.播放| 欧美日韩国产另类一区| 国产在线播放一区二区三区| 亚洲伦理在线精品| 欧美一级精品在线| 成人美女视频在线观看| 免费观看日韩av| 日韩伦理免费电影| 久久久久久久久一| 91精品国产欧美日韩| 91蜜桃视频在线| 国产老妇另类xxxxx| 日韩不卡一区二区| 一区二区三区日韩欧美| 日本一区二区电影| 久久蜜桃av一区精品变态类天堂| 欧美久久高跟鞋激| 色先锋久久av资源部| www.欧美亚洲| 国产精品一级在线| 男男视频亚洲欧美| 亚洲sss视频在线视频| 国产精品日日摸夜夜摸av| 久久嫩草精品久久久久| 日韩欧美精品在线视频| 日韩一区和二区| 欧美高清视频www夜色资源网| 欧美视频一区二区三区四区| 99热在这里有精品免费| 91在线porny国产在线看| 成人午夜av影视| 91丨九色丨黑人外教| 99r国产精品| 欧美亚洲一区三区| 欧美剧情片在线观看| 日韩一级大片在线观看| 久久久久一区二区三区四区| 久久久www成人免费无遮挡大片| 国产精品三级视频| 亚洲男同性视频| 欧美国产一区视频在线观看| 国产精品麻豆久久久| 亚洲一区二区黄色| 激情综合网最新| 91无套直看片红桃| 欧美人妇做爰xxxⅹ性高电影| 日韩一区和二区| 日韩理论片中文av| 欧美96一区二区免费视频| 成人白浆超碰人人人人| 精品视频一区三区九区| 精品久久久网站| 亚洲一区二区三区四区在线观看| 日韩av在线免费观看不卡| 9i看片成人免费高清| 欧美疯狂性受xxxxx喷水图片| 国产午夜精品一区二区三区视频 | 久久超碰97中文字幕| 色婷婷综合久久久久中文| 久久久99免费| 免费高清在线视频一区·| 99在线精品视频| 久久先锋影音av鲁色资源网| 日韩精品一级中文字幕精品视频免费观看| 国产美女在线精品| 精品欧美一区二区在线观看| 手机精品视频在线观看| 欧美综合久久久| 亚洲欧美经典视频| 成人小视频在线| 国产精品美日韩| 国产精品亚洲а∨天堂免在线| 精品日韩一区二区三区| 男人的天堂亚洲一区| 欧美久久久久久久久中文字幕| 亚洲国产成人高清精品| 91福利视频久久久久| 一区二区在线观看视频在线观看| 国产不卡在线视频| 国产精品传媒在线| av在线这里只有精品|