⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sliderctrl.cpp

📁 3D reconstruction, medical image processing from colons, using intel image processing for based clas
💻 CPP
📖 第 1 页 / 共 3 页
字号:
				DrawGripPosition(&dcMem, m_nPixelRight,  m_nPosRight);			}		}	}	pDC->BitBlt(0, 0, rcClient.Width(), rcClient.Height(), &dcMem, 0, 0, SRCCOPY);	// Clean up.	dcMem.SelectObject(pOldBmp);	dcMem.RestoreDC(nSaveDC);	dcMem.DeleteDC();	bmpMem.DeleteObject();		return TRUE;}/////////////////////////////////////////////////////////////////////////////// 侨伎俊 狼秦 函窍绰 葛剧阑 弊妨霖促. 侨伎篮 函沁绰单 角力 困摹蔼篮 函窍瘤 臼阑锭绰// 皋矫瘤甫 焊郴瘤 臼扁 困秦 馆券 蔼捞 0焊促 累栏搁 拳搁俊 grip狼 困摹绰 官布绰单// position函荐 蔼篮 函窍瘤 臼疽促// 0 : left, 1 : right, 2 : Center, 3 : left-center, 4 : center-right, 5 : left-right-centerint RxSliderCtrl::EraseBkgnd(int nIndex){	int		nReturn = 0;	CDC		*pDC = GetDC();	CRect	rcClient, rcTemp;	GetClientRect(rcClient);	// Create a mem DC for drawing	CDC dcMem;	CBitmap bmpMem;	dcMem.CreateCompatibleDC(pDC);	bmpMem.CreateCompatibleBitmap(pDC, rcClient.Width(), rcClient.Height());	CBitmap *pOldBmp = dcMem.SelectObject(&bmpMem);	int nSaveDC = dcMem.SaveDC();	// Draw Background	DrawBack(&dcMem, rcClient);	if(m_dwExStyle & RXSC_GC_SINGLE)	{		int		nOldPos = m_nPosLeft;		rcTemp = GetGripRect(m_nPixelLeft);		DrawGrip(&dcMem, rcTemp, (m_nSelGrip == RXSC_MOUSE_GRIP_LEFT));		m_nPosLeft = PosToPixel(m_nPixelLeft, m_nPixelMin, m_nPixelMax-RXSC_GRIP_WIDTH, FALSE);		if(nOldPos != m_nPosLeft)		nReturn++;		if(m_dwExStyle & RXSC_CD_SHOW)			DrawGripPosition(&dcMem, m_nPixelLeft, m_nPosLeft, TRUE);	}	else if(m_dwExStyle & RXSC_GC_MULTI)	{		// draw selected bar region		rcTemp = GetGripRect(m_nPixelLeft, TRUE);		rcTemp.SetRect(rcTemp.right, rcTemp.top, m_nPixelRight, rcTemp.bottom);		dcMem.FillSolidRect(rcTemp, m_crNSel);		// draw left grip		rcTemp = GetGripRect(m_nPixelLeft);		DrawGrip(&dcMem, rcTemp, (m_nSelGrip == RXSC_MOUSE_GRIP_LEFT || m_nSelGrip == RXSC_MOUSE_GRIP_REGION));		if(nIndex == 0 || nIndex == 5)		{			int		nOldPos = m_nPosLeft;			m_nPosLeft  = PosToPixel(m_nPixelLeft,  m_nPixelMin, m_nPixelMax-(RXSC_GRIP_WIDTH*2), FALSE);			if(nOldPos != m_nPosLeft)		nReturn++;		}		// draw right grip		rcTemp = GetGripRect(m_nPixelRight);		DrawGrip(&dcMem, rcTemp, (m_nSelGrip == RXSC_MOUSE_GRIP_RIGHT || m_nSelGrip == RXSC_MOUSE_GRIP_REGION));		if(nIndex == 1 || nIndex == 5)		{			int		nOldPos = m_nPosRight;			m_nPosRight = PosToPixel(m_nPixelRight, m_nPixelMin+RXSC_GRIP_WIDTH, m_nPixelMax-RXSC_GRIP_WIDTH, FALSE);			if(nOldPos != m_nPosRight)		nReturn++;		}		if(m_dwExStyle & RXSC_CD_SHOW)		{			if(m_nSelText == RXSC_MOUSE_GRIP_LEFT)			{				DrawGripPosition(&dcMem, m_nPixelRight,  m_nPosRight);				DrawGripPosition(&dcMem, m_nPixelLeft,   m_nPosLeft, TRUE);			}			else if(m_nSelText == RXSC_MOUSE_GRIP_RIGHT)			{				DrawGripPosition(&dcMem, m_nPixelLeft,   m_nPosLeft);				DrawGripPosition(&dcMem, m_nPixelRight,  m_nPosRight, TRUE);			}			else			{				DrawGripPosition(&dcMem, m_nPixelLeft,   m_nPosLeft);				DrawGripPosition(&dcMem, m_nPixelRight,  m_nPosRight);			}		}	}	else if(m_dwExStyle & RXSC_GC_MULTI_EX)	{		// draw selected bar region		rcTemp = GetGripRect(m_nPixelLeft, TRUE);		rcTemp.SetRect(rcTemp.right, rcTemp.top, m_nPixelRight, rcTemp.bottom);		dcMem.FillSolidRect(rcTemp, m_crNSel);		// draw left grip		rcTemp = GetGripRect(m_nPixelLeft);		DrawGrip(&dcMem, rcTemp, (m_nSelGrip == RXSC_MOUSE_GRIP_LEFT || m_nSelGrip == RXSC_MOUSE_GRIP_REGION));		if(nIndex == 0 || nIndex == 3 || nIndex == 5)		{			int		nOldPos = m_nPosLeft;			m_nPosLeft   = PosToPixel(m_nPixelLeft, m_nPixelMin, m_nPixelMax-(RXSC_GRIP_WIDTH*3), FALSE);			if(nOldPos != m_nPosLeft)		nReturn++;		}		// draw right grip		rcTemp = GetGripRect(m_nPixelRight);		DrawGrip(&dcMem, rcTemp, (m_nSelGrip == RXSC_MOUSE_GRIP_RIGHT || m_nSelGrip == RXSC_MOUSE_GRIP_REGION));		if(nIndex == 1 || nIndex == 4 || nIndex == 5)		{			int		nOldPos = m_nPosRight;			m_nPosRight  = PosToPixel(m_nPixelRight, m_nPixelMin+(RXSC_GRIP_WIDTH*2), m_nPixelMax-RXSC_GRIP_WIDTH, FALSE);			if(nOldPos != m_nPosRight)		nReturn++;		}		// draw center grip		rcTemp = GetGripRect(m_nPixelCenter, TRUE);		DrawCenterGrip(&dcMem, rcTemp, (m_nSelGrip == RXSC_MOUSE_GRIP_CENTER || m_nSelGrip == RXSC_MOUSE_GRIP_REGION));		if(nIndex >= 2 && nIndex <= 5)		{			int		nOldPos = m_nPosCenter;			m_nPosCenter = PosToPixel(m_nPixelCenter,  m_nPixelMin+RXSC_GRIP_WIDTH, m_nPixelMax-(RXSC_GRIP_WIDTH*2), FALSE);			if(nOldPos != m_nPosCenter)		nReturn++;		}		if(m_dwExStyle & RXSC_CD_SHOW)		{			if(m_nSelText == RXSC_MOUSE_GRIP_LEFT)			{				DrawGripPosition(&dcMem, m_nPixelRight,  m_nPosRight);				DrawGripPosition(&dcMem, m_nPixelCenter, m_nPosCenter);				DrawGripPosition(&dcMem, m_nPixelLeft,   m_nPosLeft, TRUE);			}			else if(m_nSelText == RXSC_MOUSE_GRIP_CENTER)			{				DrawGripPosition(&dcMem, m_nPixelRight,  m_nPosRight);				DrawGripPosition(&dcMem, m_nPixelLeft,   m_nPosLeft);				DrawGripPosition(&dcMem, m_nPixelCenter, m_nPosCenter, TRUE);			}			else if(m_nSelText == RXSC_MOUSE_GRIP_RIGHT)			{				DrawGripPosition(&dcMem, m_nPixelLeft,   m_nPosLeft);				DrawGripPosition(&dcMem, m_nPixelCenter, m_nPosCenter);				DrawGripPosition(&dcMem, m_nPixelRight,  m_nPosRight, TRUE);			}			else			{				DrawGripPosition(&dcMem, m_nPixelLeft,   m_nPosLeft);				DrawGripPosition(&dcMem, m_nPixelCenter, m_nPosCenter);				DrawGripPosition(&dcMem, m_nPixelRight,  m_nPosRight);			}		}	}	pDC->BitBlt(0, 0, rcClient.Width(), rcClient.Height(), &dcMem, 0, 0, SRCCOPY);	// Clean up.	dcMem.SelectObject(pOldBmp);	dcMem.RestoreDC(nSaveDC);	dcMem.DeleteDC();	bmpMem.DeleteObject();	ReleaseDC(pDC);	return nReturn;}// fill the hold background and draw center barvoid RxSliderCtrl::DrawBack(CDC *pDC, CRect rect){	CRect	rcTemp;	// Fill the hole background	CBrush	brush, *pOldBrush;	brush.CreateSolidBrush(m_crBkgnd);	pOldBrush = pDC->SelectObject(&brush);	pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);	pDC->SelectObject(pOldBrush);	brush.DeleteObject();	// draw border around a hole control	if(m_dwExStyle & RXSC_BS_OVER)		pDC->Draw3dRect(rect, RGB(255,255,255), RGB(  0,  0,  0));	else if(m_dwExStyle & RXSC_BS_UNDER)		pDC->Draw3dRect(rect, RGB(  0,  0,  0), RGB(255,255,255));	// draw axis	int		nCenter;	if(m_dwExStyle & RXSC_CD_SHOW)		nCenter = rect.top + RXSC_MARGIN + RXSC_TOOLTIP_MARGIN + (RXSC_GRIP_HEIGHT / 2);	else		nCenter = rect.top + RXSC_MARGIN + (RXSC_GRIP_HEIGHT / 2);	rcTemp.SetRect(rect.left+RXSC_MARGIN, nCenter-m_nBarThickness, rect.right-RXSC_MARGIN, nCenter+m_nBarThickness);	brush.CreateSolidBrush(IsWindowEnabled() ? m_crNFace : m_crDFace);	pOldBrush = pDC->SelectObject(&brush);	pDC->PatBlt(rcTemp.left, rcTemp.top, rcTemp.Width(), rcTemp.Height(), PATCOPY);	pDC->SelectObject(pOldBrush);	brush.DeleteObject();	// draw border around the center bar	pDC->Draw3dRect(rcTemp, RGB(  0,  0,  0), RGB(  0,  0,  0));}// RXSC_GA_BOTH, RXSC_GA_UP, RXSC_GA_DOWNvoid RxSliderCtrl::DrawGrip(CDC *pDC, CRect rect, BOOL bCheck){	if(m_dwExStyle & RXSC_GA_BOTH)	{		pDC->Draw3dRect(rect, RGB(  0,  0,  0), RGB(  0,  0,  0));		rect.DeflateRect(1,1,1,1);		if(!IsWindowEnabled())		// Disable		{			pDC->Draw3dRect(rect, RGB(255,255,255), RGB(255,255,255));			rect.DeflateRect(1,1,1,1);			pDC->FillSolidRect(rect, m_crDGrip);		}		else if(!bCheck)			// Normal		{			pDC->Draw3dRect(rect, RGB(255,255,255), RGB( 92, 92, 92));			rect.DeflateRect(1,1,1,1);			pDC->FillSolidRect(rect, m_crNGrip);		}		else						// Select		{			pDC->Draw3dRect(rect, RGB( 92, 92, 92), RGB(255,255,255));			rect.DeflateRect(1,1,1,1);			pDC->FillSolidRect(rect, m_crSGrip);		}	}	else if(m_dwExStyle & RXSC_GA_UP)	{		// Draw Edge		pDC->BeginPath();			pDC->MoveTo(rect.left, rect.bottom-1);			pDC->LineTo(rect.left, rect.top+5);			pDC->LineTo(rect.CenterPoint().x, rect.top);			pDC->LineTo(rect.right-1, rect.top+5);			pDC->LineTo(rect.right-1, rect.bottom-1);		pDC->EndPath();		CPen	pen, *pOldPen;		pen.CreatePen(PS_SOLID, 1, RGB(  0,  0,  0));		CBrush	brush, *pOldBrush;		if(!IsWindowEnabled())			brush.CreateSolidBrush(m_crDGrip);		else if(!bCheck)			brush.CreateSolidBrush(m_crNGrip);		else			brush.CreateSolidBrush(m_crSGrip);		pOldPen   = pDC->SelectObject(&pen);		pOldBrush = pDC->SelectObject(&brush);		pDC->StrokeAndFillPath();		pDC->SelectObject(pOldPen);		pDC->SelectObject(pOldBrush);		pen.DeleteObject();		brush.DeleteObject();		if(!IsWindowEnabled())		{			pen.CreatePen(PS_SOLID, 1, RGB(255,255,255));			pOldPen = pDC->SelectObject(&pen);			pDC->MoveTo(rect.left+1, rect.bottom-2);			pDC->LineTo(rect.left+1, rect.top+5);			pDC->LineTo(rect.CenterPoint().x, rect.top+1);			pDC->LineTo(rect.right-2, rect.top+5);			pDC->LineTo(rect.right-2, rect.bottom-2);			pDC->LineTo(rect.left+1, rect.bottom-2);			pDC->SelectObject(pOldPen);			pen.DeleteObject();		}		else if(!bCheck)		{			pen.CreatePen(PS_SOLID, 1, RGB(255,255,255));			pOldPen = pDC->SelectObject(&pen);			pDC->MoveTo(rect.left+1, rect.bottom-2);			pDC->LineTo(rect.left+1, rect.top+5);			pDC->LineTo(rect.CenterPoint().x, rect.top+1);			pDC->SelectObject(pOldPen);			pen.DeleteObject();		}		else		{			pen.CreatePen(PS_SOLID, 1, RGB(255,255,255));			pOldPen = pDC->SelectObject(&pen);			pDC->MoveTo(rect.right-2, rect.top+5);			pDC->LineTo(rect.right-2, rect.bottom-2);			pDC->LineTo(rect.left+1, rect.bottom-2);			pDC->SelectObject(pOldPen);			pen.DeleteObject();		}	}	else if(m_dwExStyle & RXSC_GA_DOWN)	{		// Draw Edge		pDC->BeginPath();			pDC->MoveTo(rect.left, rect.top+1);			pDC->LineTo(rect.left, rect.bottom-5);			pDC->LineTo(rect.CenterPoint().x, rect.bottom);			pDC->LineTo(rect.right-1, rect.bottom-5);			pDC->LineTo(rect.right-1, rect.top+1);			pDC->LineTo(rect.left, rect.top+1);		pDC->EndPath();		CPen	pen, *pOldPen;		pen.CreatePen(PS_SOLID, 1, RGB(  0,  0,  0));		CBrush	brush, *pOldBrush;		if(!IsWindowEnabled())			brush.CreateSolidBrush(m_crDGrip);		else if(!bCheck)			brush.CreateSolidBrush(m_crNGrip);		else			brush.CreateSolidBrush(m_crSGrip);		pOldPen   = pDC->SelectObject(&pen);		pOldBrush = pDC->SelectObject(&brush);		pDC->StrokeAndFillPath();		pDC->SelectObject(pOldPen);		pDC->SelectObject(pOldBrush);		pen.DeleteObject();		brush.DeleteObject();		if(!IsWindowEnabled())		{			pen.CreatePen(PS_SOLID, 1, RGB(255,255,255));			pOldPen = pDC->SelectObject(&pen);			pDC->MoveTo(rect.left+1, rect.top+2);			pDC->LineTo(rect.left+1, rect.bottom-5);			pDC->LineTo(rect.CenterPoint().x, rect.bottom-1);			pDC->LineTo(rect.right-2, rect.bottom-5);			pDC->LineTo(rect.right-2, rect.top+2);			pDC->LineTo(rect.left+1, rect.top+2);			pDC->SelectObject(pOldPen);			pen.DeleteObject();		}		else if(!bCheck)		{			pen.CreatePen(PS_SOLID, 1, RGB(255,255,255));			pOldPen = pDC->SelectObject(&pen);			pDC->MoveTo(rect.left+1, rect.top+2);			pDC->LineTo(rect.left+1, rect.bottom-5);			pDC->MoveTo(rect.left+1, rect.top+2);			pDC->LineTo(rect.right-2, rect.top+2);			pDC->SelectObject(pOldPen);			pen.DeleteObject();		}		else		{			pen.CreatePen(PS_SOLID, 1, RGB(255,255,255));			pOldPen = pDC->SelectObject(&pen);			pDC->MoveTo(rect.CenterPoint().x, rect.bottom-1);			pDC->LineTo(rect.right-2, rect.bottom-5);			pDC->LineTo(rect.right-2, rect.top+2);			pDC->SelectObject(pOldPen);			pen.DeleteObject();		}	}}void RxSliderCtrl::DrawCenterGrip(CDC *pDC, CRect rect, BOOL bCheck){	pDC->FillSolidRect(rect, (bCheck ? m_crSCGrip : m_crNCGrip));	pDC->Draw3dRect(rect, RGB(255,255,255), RGB(255,255,255));}void RxSliderCtrl::DrawGripPosition(CDC *pDC, int nPixel, int nPos, BOOL bFocus){	CFont	font, *pOldFont;	int	nHeight = -((pDC->GetDeviceCaps(LOGPIXELSY) * 8) / 72);	font.CreateFont(nHeight, 0, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS,					CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE, _T("Arial"));	pOldFont = pDC->SelectObject(&font);	pDC->SetTextColor(RGB(  0,  0,  0));	pDC->SetBkMode(TRANSPARENT);	CString	strTemp;	CSize	szText;	CRect	rcClient, rcTemp;	GetClientRect(rcClient);	int		nTop = rcClient.top+RXSC_MARGIN;	int		nLeft;	int		nCenter;	strTemp.Format(_T("%d"), nPos);	szText = pDC->GetTextExtent(strTemp);	szText.cx += 6;	nCenter = szText.cx / 2 - 5;	nLeft = rcClient.left+nPixel-nCenter;	if(nLeft < RXSC_MARGIN)		nLeft = RXSC_MARGIN;	if((nLeft+szText.cx) > (rcClient.right-RXSC_MARGIN))		nLeft = rcClient.right-RXSC_MARGIN-szText.cx;	rcTemp.SetRect(nLeft, nTop, nLeft+szText.cx, nTop+szText.cy);	CPen	pen, *pOldPen;	CBrush	brush, *pOldBrush;	pen.CreatePen(PS_SOLID, 1, RGB(  0,  0, 0));	brush.CreateSolidBrush(bFocus ? RGB(255,255, 230) : RGB(200,200, 100));	pOldPen   = pDC->SelectObject(&pen);	pOldBrush = pDC->SelectObject(&brush);	pDC->Rectangle(rcTemp);	pDC->DrawText(strTemp, rcTemp, DT_SINGLELINE|DT_VCENTER|DT_CENTER);	pDC->SelectObject(pOldPen);	pDC->SelectObject(pOldBrush);	pen.DeleteObject();	brush.DeleteObject();	pDC->SelectObject(pOldFont);	font.DeleteObject();}/////////////////////////////////////////////////////////////////////////////int  RxSliderCtrl::PosToPixel(int nValue, int nPixelMin, int nPixelMax, BOOL bPosToPixel){	int		nReturn;	float	fRatio = (float)(nPixelMax - nPixelMin) / (float)(m_nPosMax - m_nPosMin);	if(bPosToPixel)	{		if(nValue >= m_nPosMax)			nReturn = nPixelMax;		else if(nValue <= m_nPosMin)			nReturn = nPixelMin;		else			nReturn = (int)((nValue - m_nPosMin) * fRatio + nPixelMin + 0.5f); // Pos ==> Pixel	}	else	{		if(nValue >= m_nPixelMax)			nReturn = m_nPosMax;		else if(nValue <= m_nPixelMin)			nReturn = m_nPosMin;		else			nReturn = (int)((nValue - nPixelMin) / fRatio + m_nPosMin + 0.5f); // Pixel ==> Pos	}	return nReturn;}int  RxSliderCtrl::HitTest(CPoint point){	CRect	rcTemp;	if(m_dwExStyle & RXSC_GC_SINGLE)	{		rcTemp = GetGripRect(m_nPixelLeft);		if(rcTemp.PtInRect(point))		return RXSC_MOUSE_GRIP_LEFT;	}	else if(m_dwExStyle & RXSC_GC_MULTI)	{		rcTemp = GetGripRect(m_nPixelLeft);		if(rcTemp.PtInRect(point))		return RXSC_MOUSE_GRIP_LEFT;		rcTemp = GetGripRect(m_nPixelRight);		if(rcTemp.PtInRect(point))		return RXSC_MOUSE_GRIP_RIGHT;		rcTemp = GetGripRect(m_nPixelLeft);		rcTemp.SetRect(rcTemp.right, rcTemp.top, m_nPixelRight, rcTemp.bottom);		if(rcTemp.PtInRect(point))		return RXSC_MOUSE_GRIP_REGION;	}	else if(m_dwExStyle & RXSC_GC_MULTI_EX)	{		rcTemp = GetGripRect(m_nPixelLeft);		if(rcTemp.PtInRect(point))		return RXSC_MOUSE_GRIP_LEFT;		rcTemp = GetGripRect(m_nPixelRight);		if(rcTemp.PtInRect(point))		return RXSC_MOUSE_GRIP_RIGHT;		rcTemp = GetGripRect(m_nPixelCenter, TRUE);		if(rcTemp.PtInRect(point))		return RXSC_MOUSE_GRIP_CENTER;		rcTemp = GetGripRect(m_nPixelLeft);		rcTemp.SetRect(rcTemp.right, rcTemp.top, m_nPixelRight, rcTemp.bottom);		if(rcTemp.PtInRect(point))		return RXSC_MOUSE_GRIP_REGION;	}	return  -1;}CRect RxSliderCtrl::GetGripRect(int nPixel, BOOL bCenter){	CRect	rcClient, rcGrip;	GetClientRect(rcClient);	int		nTemp;	if(bCenter)	{		if(m_dwExStyle & RXSC_CD_SHOW)			nTemp = rcClient.top + RXSC_MARGIN + RXSC_TOOLTIP_MARGIN + (RXSC_GRIP_HEIGHT / 2);		else			nTemp = rcClient.top + RXSC_MARGIN + (RXSC_GRIP_HEIGHT / 2);		rcGrip.SetRect(nPixel, nTemp-m_nBarThickness+1, nPixel+RXSC_GRIP_WIDTH, nTemp+m_nBarThickness-1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -