Exemple #1
0
// 在图像上做标记
void CFFTDisp::DrawMark( int x, int y, char type, COLORREF color)
{
	if ( m_dcPlot == NULL )
	{
		return;
	}

	int len = 3;
	CPen penMark( PS_SOLID, 1, color );
	CPen* pOldPen = m_dcPlot.SelectObject( &penMark );
	switch ( type )
	{
		case '+':
		{
			m_dcPlot.MoveTo( x-len, y );
			m_dcPlot.LineTo( x+len, y );
			m_dcPlot.MoveTo( x, y-len );
			m_dcPlot.LineTo( x, y+len );
			break;
		}
		case 'x':
		{
			m_dcPlot.MoveTo( x-len, y-len );
			m_dcPlot.LineTo( x+len, y+len );
			m_dcPlot.MoveTo( x-len, y+len );
			m_dcPlot.LineTo( x+len, y-len );
			break;
		}
		case 's':
		{
			m_dcPlot.MoveTo( x-len, y-len );
			m_dcPlot.LineTo( x+len, y-len );
			m_dcPlot.MoveTo( x-len, y+len );
			m_dcPlot.LineTo( x+len, y+len );
			break;
		}
		default:
			break;
	}

	if ( pOldPen != NULL )
	{
		m_dcPlot.SelectObject( pOldPen );
	}
	
}
Exemple #2
0
void CMyDialog::DrawCloseButton(CDC *pDC,int enumStatus)
{
	Color clrStart,clrEnd,clrBorder,clrCloseMark;
	CRect rc;
	GetClientRect(rc);
	if (enumStatus==DTS_NORMAL)
	{
		clrStart=Color(231,231,231);
		clrEnd=Color(227,227,227);
		clrBorder=Color(158,158,158);
		clrCloseMark=Color(128,128,128);
		
		clrStart=Color(219,219,220);
	    clrEnd=Color(190,192,193);
	}
	else if (enumStatus==DTS_HOVER)
	{
		clrStart=Color(245,28,6);
		clrEnd=Color(207,9,7);
		clrBorder=Color(187,5,0);
		clrCloseMark=Color(255,255,255);
	}
	else// if (enumStatus==DTS_CLICKED)
	{
		clrStart=Color(207,9,7);	
		clrEnd=Color(245,28,6);
		clrBorder=Color(187,5,0);
		clrCloseMark=Color(255,255,255);
	}
	m_rcClose.SetRect(rc.right-36,1,rc.right-6,21);
	GraphicsPath path;
	int nRadius=4;
	Point point[5];
	point[0]=Point(m_rcClose.right,m_rcClose.bottom-nRadius);
	point[1]=Point(m_rcClose.right,m_rcClose.top);
	point[2]=Point(m_rcClose.left,m_rcClose.top);
	point[3]=Point(m_rcClose.left,m_rcClose.bottom);
	point[4]=Point(m_rcClose.right-nRadius,m_rcClose.bottom);
	path.AddLines(point,5);
	path.AddArc(m_rcClose.right-2*nRadius,m_rcClose.bottom-2*nRadius,2*nRadius,2*nRadius,0,90);
	LinearGradientBrush linGrBrush(
		Rect(m_rcClose.left,m_rcClose.top,m_rcClose.Width(),m_rcClose.Height()),
		clrStart,
		clrEnd, 
		LinearGradientModeVertical);
	Graphics gs(pDC->m_hDC);
	gs.FillPath(&linGrBrush,&path);	
	CPoint ptCenter=m_rcClose.CenterPoint();
	if (enumStatus==DTS_CLICKED)
	{
		ptCenter.Offset(1,1);
	}
	CPen penMark(PS_SOLID,2,clrCloseMark.ToCOLORREF());
	CPen *pOldPen=pDC->SelectObject(&penMark);
	pDC->MoveTo(ptCenter.x-5,ptCenter.y-5);
	pDC->LineTo(ptCenter.x+5,ptCenter.y+5);
	pDC->MoveTo(ptCenter.x-5,ptCenter.y+5);
	pDC->LineTo(ptCenter.x+5,ptCenter.y-5);

// 	CPen penBorder(PS_SOLID,1,clrBorder.ToCOLORREF());
// 	pDC->SelectObject(&penBorder);
// 	pDC->MoveTo(m_rcClose.left-1,m_rcClose.top);
// 	pDC->LineTo(m_rcClose.left-1,m_rcClose.bottom);
	pDC->SelectObject(pOldPen);
}