Example #1
0
void CCurve::DrawCurve(QPainter * pPainter, QPoint * pCurvePoint, 
	int iStartPos, int iEndPos, QColor clrCurve,int iCurvSpaceV,  int iPenStyle)
{

	int iSaveDC = pPainter->save();	
	QPen penCurve;	
	penCurve.CreatePen (iPenStyle, 1, clrCurve);
	//画曲线
	pPainter->SelectObject (&penCurve);
	for(int j = iStartPos; j < iEndPos; j++)
	{
		if (j  == MAX_SAMPLE_NUM)
		{
			break;
		}
		if(j > iStartPos)
		{
			pPainter->MoveTo(pCurvePoint[j-1].x,pCurvePoint[j-1].y - iCurvSpaceV);
			pPainter->LineTo(pCurvePoint[j].x,pCurvePoint[j].y - iCurvSpaceV);

		}

	}
	pPainter->restore(iSaveDC);

}
Example #2
0
void CCurve::DrawSignsOnXLocation(QPainter *pPainter, QRect RectCurve, int iEventType, QPoint PtEvnt)
{
	int iYEvent;
	iYEvent = RectCurve.bottom-15;
	int iSaveDC=pPainter->save();
	QPen penEvent;
	penEvent.CreatePen(PS_SOLID,2,RGB(250,0,0));	
	pPainter->SelectObject(&penEvent);

	if(0 == iEventType)//开始事件
	{
		pPainter->MoveTo(PtEvnt.x,iYEvent-6);
		pPainter->LineTo(PtEvnt.x,iYEvent+6);
		pPainter->MoveTo(PtEvnt.x,iYEvent);
		pPainter->LineTo(PtEvnt.x+6,iYEvent);
	}
	if(1 == iEventType)//反射事件
	{
		pPainter->MoveTo(PtEvnt.x-6,iYEvent+6);
		pPainter->LineTo(PtEvnt.x-2,iYEvent+6);
		pPainter->MoveTo(PtEvnt.x-2,iYEvent+6);
		pPainter->LineTo(PtEvnt.x-2,iYEvent-6);
		pPainter->MoveTo(PtEvnt.x-2,iYEvent-6);
		pPainter->LineTo(PtEvnt.x+2,iYEvent-6);
		pPainter->MoveTo(PtEvnt.x+2,iYEvent-6);
		pPainter->LineTo(PtEvnt.x+2,iYEvent+6);
		pPainter->MoveTo(PtEvnt.x+2,iYEvent+6);
		pPainter->LineTo(PtEvnt.x+6,iYEvent+6);
	}
	if(2 == iEventType)//非反射事件
	{
		pPainter->MoveTo(PtEvnt.x-6,iYEvent-3);
		pPainter->LineTo(PtEvnt.x,iYEvent-3);
		pPainter->MoveTo(PtEvnt.x,iYEvent-3);
		pPainter->LineTo(PtEvnt.x,iYEvent+3);
		pPainter->MoveTo(PtEvnt.x,iYEvent+3);
		pPainter->LineTo(PtEvnt.x+6,iYEvent+3);
	}
	if(3 == iEventType)  //结束事件点
	{
		pPainter->MoveTo(PtEvnt.x,iYEvent-6);
		pPainter->LineTo(PtEvnt.x,iYEvent+6);
		pPainter->MoveTo(PtEvnt.x,iYEvent);
		pPainter->LineTo(PtEvnt.x-6,iYEvent);
	}
	pPainter->restore(iSaveDC);
}
Example #3
0
void CCurve::DrawIndictLine(QPainter * pPainter, int iFix, QRect rectDraw, QColor clrLine, int iPenStyle, bool bHori)
{
	int iSaveDC = pPainter->save();	
	QPen penLine;	
	penLine.CreatePen (iPenStyle, 1, clrLine);
	pPainter->SelectObject(&penLine);
	if (bHori)
	{
		//横线
		pPainter->MoveTo( rectDraw.left, iFix );
		pPainter->LineTo( rectDraw.right, iFix );
	}
	else
	{
		//竖线
		pPainter->MoveTo(iFix,  rectDraw.bottom);
		pPainter->LineTo(iFix,  rectDraw.top);
	}
	pPainter->restore(iSaveDC);
}
Example #4
0
void CCurve::DrawGridLine(QPainter *pPainter, QRect RectCurve,int iGridNumOnX, int iGridNumOnY,QColor clrLine)
{
	int nSaveDC=pPainter->save();
	QPen penGridLine;
	penGridLine.CreatePen (PS_DOT/*点*/,1,clrLine);
	int ndx = RectCurve.Width ()/iGridNumOnX;
	int ndy = RectCurve.Height ()/iGridNumOnY;
	pPainter->SelectObject (&penGridLine);
	for ( int i = 1; i< iGridNumOnX; i++)
	{			
		pPainter->MoveTo (RectCurve.left + ndx * i,RectCurve.bottom );
		pPainter->LineTo (RectCurve.left + ndx * i,RectCurve.top );			
	}
	for (int i = 1; i < iGridNumOnY; i++)
	{
		pPainter->MoveTo (RectCurve.left , RectCurve.bottom - ndy * i);
		pPainter->LineTo (RectCurve.right, RectCurve.bottom - ndy * i);
	}
	//恢复
	pPainter->restore(nSaveDC);
}
Example #5
0
void CCurve::DrawABLine(QPainter * pPainter, QPoint ptA, QPoint ptB, QRect rectDraw,
	int iLineHeight, QString strInforA, QString strInforB, QColor clrLine, int iPenStyle, bool bASel)
{

	int iSaveDC = pPainter->save();	
	QPen penLine;	
	penLine.CreatePen (iPenStyle, 2, clrLine);
	pPainter->SelectObject(&penLine);
	//指示线
	pPainter->MoveTo(ptA.x, rectDraw.top + 20);
	pPainter->LineTo(ptA.x, rectDraw.bottom);	
	pPainter->MoveTo(ptB.x,  rectDraw.top + 40);
	pPainter->LineTo(ptB.x,  rectDraw.bottom);

	//画AB标杆的指示距离
	QRect rtA,rtB;
	//当A,B线超过中线时,向右时距离矩形框在左边,否则在右边	
	if(ptA.x < rectDraw.right/2)
	{
		rtA.left = ptA.x;
		rtA.top = rectDraw.top;
		rtA.right = ptA.x+70;
		rtA.bottom = rectDraw.top + 14;
	}
	else
	{
		rtA.left = ptA.x - 70;
		rtA.top = rectDraw.top;
		rtA.right = ptA.x;
		rtA.bottom = rectDraw.top + 14;
	}
	if(ptB.x< rectDraw.right/2)
	{
		rtB.left = ptB.x;
		rtB.top = rectDraw.top+20;
		rtB.right = ptB.x + 70;
		rtB.bottom = rectDraw.top + 34;
	}
	else
	{
		rtB.left = ptB.x-70;
		rtB.top = rectDraw.top + 20;
		rtB.right = ptB.x;
		rtB.bottom = rectDraw.top + 34;
	}

	//选中的标杆显示信息的背景颜色置成深蓝色
	if( bASel )	
	{
		pPainter->SetTextColor (RGB(0,0,0));
		pPainter->ExtTextOut(rtB.left + 2, rectDraw.top + 20, ETO_CLIPPED, rtB, strInforB, NULL);
		pPainter->SetTextColor (RGB(255,255,255));
		pPainter->SetBkColor(RGB(0,0,255));
		pPainter->ExtTextOut(rtA.left + 2, rectDraw.top, ETO_CLIPPED, rtA,strInforA, NULL);
	}
	else
	{
		pPainter->SetTextColor (RGB(0,0,0));
		pPainter->ExtTextOut(rtA.left + 2, rectDraw.top, ETO_CLIPPED, rtA, strInforA, NULL);
		pPainter->SetTextColor (RGB(255,255,255));
		pPainter->SetBkColor(RGB(0,0,255));
		pPainter->ExtTextOut(rtB.left + 2, rectDraw.top + 20, ETO_CLIPPED, rtB, strInforB, NULL);
	}

	pPainter->restore(iSaveDC);
}