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

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

?? histogramdlg.cpp

?? VS2005圖像處理程序的源代碼
?? CPP
字號:
// HistogramDlg.cpp : 實現文件
//

#include "stdafx.h"
#include "photoshow.h"
#include "HistogramDlg.h"
#include "MainFrm.h"
#include "photoshowDoc.h"
#include "photoshowView.h"


// CHistogramDlg 對話框

IMPLEMENT_DYNAMIC(CHistogramDlg, CDialog)

CHistogramDlg::CHistogramDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CHistogramDlg::IDD, pParent)
	, m_nLimitLow(0)
	, m_nLimitUp(255)
	, m_nGray(0)
	, m_dPer(0)
{
	memset(m_lCounts, 0, sizeof(long) * 256);
	m_nIsDraging = DT_NULL;
}

CHistogramDlg::~CHistogramDlg()
{
}

void CHistogramDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_HISTOGRAM, m_stiHistogram);
	DDX_Text(pDX, IDC_LIMIT_LOWER, m_nLimitLow);
	DDX_Text(pDX, IDC_LIMIT_UP, m_nLimitUp);
	DDX_Text(pDX, IDC_STATIC_GRAY, m_nGray);
	DDX_Text(pDX, IDC_STATIC_PER, m_dPer);
}


BEGIN_MESSAGE_MAP(CHistogramDlg, CDialog)
	ON_EN_CHANGE(IDC_LIMIT_LOWER, &CHistogramDlg::OnEnChangeLimitLower)
	ON_EN_CHANGE(IDC_LIMIT_UP, &CHistogramDlg::OnEnChangeLimitUp)
	ON_WM_PAINT()
	ON_WM_MOUSEMOVE()
	ON_WM_SETCURSOR()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_BN_CLICKED(IDCANCEL, &CHistogramDlg::OnBnClickedCancel)
END_MESSAGE_MAP()


// CHistogramDlg 消息處理程序

void CHistogramDlg::OnEnChangeLimitLower()
{
    UpdateData(TRUE);

	// 限定取值范圍
	if (m_nLimitLow < 0)
		m_nLimitLow = 0;
	else if (m_nLimitLow > 255)
		m_nLimitLow = 255;

	// 如果下限比上限大,則互換
	if (m_nLimitLow > m_nLimitUp)
	{
		int nTemp = m_nLimitLow;
		m_nLimitLow = m_nLimitUp;
		m_nLimitUp = nTemp;
	}

	Refresh();
	UpdateData(FALSE);
}

void CHistogramDlg::OnEnChangeLimitUp()
{
	UpdateData(TRUE);

	// 限定取值范圍
	if (m_nLimitUp < 0)
		m_nLimitUp = 0;
	else if (m_nLimitUp > 255)
		m_nLimitUp = 255;

	if (m_nLimitLow > m_nLimitUp)
	{
		int nTemp = m_nLimitLow;
		m_nLimitLow = m_nLimitUp;
		m_nLimitUp = nTemp;
	}

	Refresh();
	UpdateData(FALSE);
}

void CHistogramDlg::OnPaint()
{
	CPaintDC dc(this); // device context for painting
	Refresh();
}

void CHistogramDlg::OnMouseMove(UINT nFlags, CPoint point)
{
	CRect rect;
	m_stiHistogram.GetWindowRect(rect);
	if((nFlags&MK_LBUTTON)&&m_nIsDraging){
		int offset=point.x-m_psMove.x;
		if(m_nIsDraging==DT_UP){
			if((offset+m_nLimitUp)<=255){
				if((offset+m_nLimitUp)>=m_nLimitLow)
					m_nLimitUp+=offset;
				else
					m_nLimitUp=m_nLimitLow;
			}
			else
				m_nLimitUp=255;
		}
		else{
			if((offset+m_nLimitLow)>=0){
				if((offset+m_nLimitLow)<=m_nLimitUp)
					m_nLimitLow+=offset;
				else
					m_nLimitLow=m_nLimitUp;
			}
			else
				m_nLimitLow=0;
		}
		UpdateData(FALSE);
		Refresh();
		m_psMove=point;
	}
	else
		m_nIsDraging=DT_NULL;
	ClientToScreen(&point);
	int x=point.x-rect.left-10;
	if(abs(x-m_nLimitUp)>3&&abs(x-m_nLimitLow)>3)
		m_nIsDraging=DT_NULL;
	if(rect.PtInRect(point)){
		if(x>m_nLimitLow && x<=m_nLimitUp){
			m_nGray=x;
			m_dPer=float(m_lCounts[x])/m_nPixelCount*100;
		}
		UpdateData(FALSE);
	}
}

BOOL CHistogramDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
	CRect rect;
	CPoint point;

	GetCursorPos(&point);
	m_stiHistogram.GetWindowRect(rect);
	if (rect.PtInRect(point))
	{
		int x = point.x - rect.left - 10;

		if (abs(x - m_nLimitUp) <= 3 || abs(x - m_nLimitLow) <= 3)
		{
			SetCursor(::LoadCursor(NULL, IDC_SIZEWE));
			return TRUE;
		}
	}

	return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

void CHistogramDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
    CRect rect;
	CPoint oldPoint=point;
	m_stiHistogram.GetWindowRect(rect);
	ClientToScreen(&point);
	int x=point.x-rect.left-10;
	if(abs(x-m_nLimitUp)<=3){
		m_psMove=oldPoint;
		m_nIsDraging=DT_UP;
	}
	else if(abs(x-m_nLimitLow)<=3){
		m_psMove=oldPoint;
		m_nIsDraging=DT_LOW;
	}
}

void CHistogramDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
	m_nIsDraging=DT_NULL;
}

BOOL CHistogramDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd();
	CphotoshowView* pView=(CphotoshowView*)pMain->GetActiveView();
	for(UINT i=0;i<pView->m_nPicWidth*pView->m_nPicHeight;i++){
		int value=pView->m_pImageTempBuffer[i*4];
        m_lCounts[value]++;
	}
	m_nPixelCount=pView->m_nPicWidth*pView->m_nPicHeight;
	return TRUE;
}

void CHistogramDlg::Refresh(void)
{
	CDC* pDC=m_stiHistogram.GetDC();
	CRect rect;
	CDC memDC;
	CBitmap MemBitmap;
	m_stiHistogram.GetClientRect(rect);
	memDC.CreateCompatibleDC(NULL);
	MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
	memDC.SelectObject(MemBitmap);
	memDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255));
	Graphics graph(memDC.GetSafeHdc());
	graph.FillRectangles(&SolidBrush(Color::White),
		&Rect(0,0,rect.Width(),rect.Height()),
		1);
	graph.DrawLine(&Pen(Color::Black),10,10,10,280);
	graph.DrawLine(&Pen(Color::Black),10,10,5,15);
	graph.DrawLine(&Pen(Color::Black),10,10,15,15);
	graph.DrawLine(&Pen(Color::Black),10,280,290,280);
	graph.DrawLine(&Pen(Color::Black),290,280,285,285);
	graph.DrawLine(&Pen(Color::Black),290,280,285,275);
	CString strNum;
	Font font(L"宋體",10);
	strNum=L"0";
	graph.DrawString(strNum,-1,&font,
		PointF(8,290),&SolidBrush(Color::Black));
	for(int i=0;i<256;i+=5){
		if(i%50==0)
			graph.DrawLine(&Pen(Color::Black),10+i,280,10+i,286);
		else if(i%10==0)
			graph.DrawLine(&Pen(Color::Black),10+i,280,10+i,283);
	}
	strNum=L"50";
	graph.DrawString(strNum,-1,&font,
		             PointF(53,290),&SolidBrush(Color::Black));
	strNum=L"100";
	graph.DrawString(strNum,-1,&font,
		             PointF(100,290),&SolidBrush(Color::Black));
	strNum=L"150";
	graph.DrawString(strNum,-1,&font,
		             PointF(150,290),&SolidBrush(Color::Black));
	strNum=L"200";
	graph.DrawString(strNum,-1,&font,
		             PointF(200,290),&SolidBrush(Color::Black));
	Pen pen(Color::Blue);
	pen.SetDashStyle(DashStyleDash);
	graph.DrawLine(&pen,10+m_nLimitLow,280,10+m_nLimitLow,10);
	graph.DrawLine(&pen,10+m_nLimitUp,280,10+m_nLimitUp,10);
	long lMax=0;
	REAL dHeight=0.0;
    for(int i=m_nLimitLow;i<=m_nLimitUp;i++)
		lMax=max(lMax,m_lCounts[i]);
	strNum.Format(L"%d",lMax);
	graph.DrawString(strNum,-1,&font,
		             PointF(10,25),&SolidBrush(Color::Black));
	for (int i=m_nLimitLow;i<= m_nLimitUp;i++){
		dHeight=(REAL)(m_lCounts[i])/lMax*250;
		graph.DrawLine(&Pen(Color::Gray),i+10.0f,280.0f,i+10.0f,280-dHeight);
	}
	pDC->BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
	m_stiHistogram.ReleaseDC(pDC);
}

void CHistogramDlg::OnBnClickedCancel()
{
	// TODO: 在此添加控件通知處理程序代碼
	OnCancel();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
95精品视频在线| 国产一区 二区 三区一级| 中文字幕av一区二区三区| 日韩女同互慰一区二区| 91精品国产福利| 欧美日韩国产精选| 欧美一区二区三区思思人| 欧美色区777第一页| 欧美日韩三级一区二区| 91麻豆精品久久久久蜜臀 | 亚洲国产成人一区二区三区| 欧美变态凌虐bdsm| 国产丝袜美腿一区二区三区| 久久久蜜桃精品| 亚洲人成网站在线| 亚洲丶国产丶欧美一区二区三区| 午夜av区久久| 国产在线不卡一区| aaa亚洲精品一二三区| 在线观看视频一区| 8x8x8国产精品| 亚洲激情六月丁香| 亚洲综合一区二区三区| 美日韩一级片在线观看| 成人综合婷婷国产精品久久蜜臀| proumb性欧美在线观看| 欧美日韩国产综合久久| 国产区在线观看成人精品| 亚洲欧美日韩中文播放| 蜜桃av一区二区| 91免费看视频| 久久嫩草精品久久久精品| 亚洲精选在线视频| 久久爱www久久做| 日本精品一区二区三区高清 | 精品成人私密视频| 亚洲欧美一区二区三区久本道91| 秋霞成人午夜伦在线观看| 91麻豆免费看片| 久久久久久免费毛片精品| 亚洲夂夂婷婷色拍ww47| 国产成人免费视频一区| 884aa四虎影成人精品一区| 国产欧美精品一区aⅴ影院| 天天综合色天天综合色h| 国产盗摄视频一区二区三区| 欧美欧美午夜aⅴ在线观看| 亚洲日本在线a| 成人黄页在线观看| 精品国产精品一区二区夜夜嗨| 亚洲人成网站影音先锋播放| 国产成人一区在线| 日韩欧美高清在线| 亚洲一二三区不卡| 91在线高清观看| 中文字幕免费在线观看视频一区| 久久国产精品第一页| 在线精品视频免费播放| 国产精品电影一区二区| 国产精品影视天天线| 欧美电影免费观看完整版| 亚洲高清视频在线| 在线国产电影不卡| 一区二区三区在线视频观看58| 成人国产亚洲欧美成人综合网| 久久蜜桃香蕉精品一区二区三区| 免费久久精品视频| 91精品国产欧美一区二区| 亚洲电影你懂得| 欧美日韩成人在线一区| 亚洲va国产va欧美va观看| 欧美中文字幕一二三区视频| 怡红院av一区二区三区| 91丝袜美腿高跟国产极品老师 | 欧美一区二区三区四区在线观看| 亚洲福利视频一区二区| 色偷偷久久人人79超碰人人澡| 亚洲品质自拍视频| 欧美视频日韩视频在线观看| 亚洲成人免费看| 日韩欧美国产小视频| 久久99久久久久久久久久久| 日韩免费高清电影| 精品在线一区二区| 国产精品久久久久婷婷二区次| 国产不卡视频在线播放| 成人免费在线观看入口| 在线免费观看日韩欧美| 天天操天天综合网| 欧美精品一区男女天堂| 国产盗摄精品一区二区三区在线 | 亚洲综合色视频| 欧美精品亚洲一区二区在线播放| 丝袜亚洲另类欧美综合| 欧美一二区视频| 国产成人啪午夜精品网站男同| 亚洲乱码国产乱码精品精98午夜| 欧美美女黄视频| 国产尤物一区二区在线| 亚洲蜜臀av乱码久久精品| 欧美一区二区在线视频| 岛国一区二区三区| 午夜精品久久久久久| 久久伊人蜜桃av一区二区| 91国偷自产一区二区三区成为亚洲经典| 亚洲韩国一区二区三区| 久久蜜臀精品av| 欧美性高清videossexo| 狠狠色丁香婷婷综合久久片| 国产精品国产成人国产三级| 欧美日韩高清一区二区三区| 国产一区二区不卡老阿姨| 亚洲成人免费看| 国产精品国产三级国产aⅴ原创| 欧美天天综合网| 成人高清视频免费观看| 久久国产夜色精品鲁鲁99| 亚洲精品视频自拍| 久久一区二区视频| 欧美日韩精品一区二区三区| 成人黄色免费短视频| 激情久久五月天| 午夜影院在线观看欧美| 国产精品视频九色porn| 日韩视频不卡中文| 欧美日韩国产综合一区二区三区| 成人午夜视频在线| 蜜桃免费网站一区二区三区| 亚洲激情中文1区| 国产精品美女久久久久久久| 日韩一区二区精品在线观看| 在线观看不卡一区| 色综合婷婷久久| 成人黄色小视频在线观看| 国产乱人伦精品一区二区在线观看| 亚洲午夜免费电影| 亚洲精品国产a久久久久久| 国产精品午夜在线观看| 久久女同精品一区二区| 日韩欧美成人一区| 欧美一级夜夜爽| 欧美二区在线观看| 欧美性高清videossexo| 欧美亚洲综合一区| 日本高清不卡在线观看| 91丨porny丨国产入口| 97久久精品人人澡人人爽| 福利视频网站一区二区三区| 国产成人亚洲综合a∨婷婷| 国产成人精品一区二区三区四区 | 日韩免费成人网| 日韩情涩欧美日韩视频| 欧美一区二区女人| 欧美成人女星排名| 精品国产91久久久久久久妲己| 日韩欧美国产不卡| 久久免费看少妇高潮| 欧美激情一区三区| 亚洲人亚洲人成电影网站色| 一区二区三区精品视频在线| 亚洲成国产人片在线观看| 日韩中文字幕区一区有砖一区| 婷婷久久综合九色综合伊人色| 日韩av网站免费在线| 久久99国产精品久久99 | 一区二区三区蜜桃| 亚洲成人先锋电影| 麻豆精品在线看| 成人久久视频在线观看| 在线视频观看一区| 日韩女优视频免费观看| 国产农村妇女毛片精品久久麻豆 | 天天做天天摸天天爽国产一区 | 欧美日韩大陆在线| www国产成人| 亚洲天堂2014| 偷拍一区二区三区四区| 国产一区二区三区在线看麻豆| www.亚洲人| 欧美高清一级片在线| 精品国产一区二区三区久久久蜜月 | 亚洲最新视频在线播放| 日产精品久久久久久久性色| 国产中文字幕一区| 欧美三级电影在线看| 国产午夜亚洲精品理论片色戒| 亚洲精品国产品国语在线app| 日本三级韩国三级欧美三级| 成人黄动漫网站免费app| 91精品国产91综合久久蜜臀| 中文字幕日本乱码精品影院| 日韩专区欧美专区| 一本色道久久综合亚洲aⅴ蜜桃| 欧美人妇做爰xxxⅹ性高电影| 国产精品丝袜黑色高跟| 婷婷综合另类小说色区| heyzo一本久久综合| xfplay精品久久| 日韩高清在线观看| 日本精品免费观看高清观看|