Example #1
0
	//函数功能:图像上移动点
	//参数:当前点坐标
	long CMapEditor10View::MovePoint(CPoint tempxy)    
	{
		if(m_step==0)
			return (0);
		CPen newpen(PS_SOLID,2,RGB(255,255,255));//构造画笔对象
		//获得本窗口或当前活动视图
		CClientDC dc(this);
		CPen *pOldPen=dc.SelectObject(&newpen);//将画笔选入DC,SelectObject函数返回先前画笔
		//设置异或模式画点
		//dc.SetROP2(R2_NOT);	
		//这里抹去一个小十字
		dc.MoveTo(nowPoint.x,nowPoint.y-6);
		dc.LineTo(nowPoint.x,nowPoint.y+6);
		dc.MoveTo(nowPoint.x-6,nowPoint.y);
		dc.LineTo(nowPoint.x+6,nowPoint.y);
		CPen oldpen(PS_SOLID,2,RGB(192,192,192));	//构造画笔对象
		dc.SelectObject(&oldpen);					//将画笔选入DC,SelectObject函数返回先前画笔
		//这里画一个小十字
		dc.MoveTo(tempxy.x,tempxy.y-6);
		dc.LineTo(tempxy.x,tempxy.y+6);
		dc.MoveTo(tempxy.x-6,tempxy.y);
		dc.LineTo(tempxy.x+6,tempxy.y);
		nowPoint=tempxy;							//把当前点存为上一点
		GPntChanged=1;
		::ReleaseDC(m_hWnd,dc);
		return (1);

	}
Example #2
0
	//函数功能:造线
	//参数:
	long CMapEditor10View::CreateLinMM(CPoint point)       
	{
		if(MakingLine==1) {
			DrawPoint(point,pntColor);
			CPen newpen(PS_SOLID,2,RGB(255,0,0));			//构造画笔对象
			CPen oldpen(PS_SOLID,2,RGB(255,255,255));		//构造画笔对象

			CClientDC dc(this);								//获得本窗口或当前活动视图
			CPen *pOldPen=dc.SelectObject(&newpen);			//将画笔选入DC,SelectObject函数返回先前画笔
			//这里标亮要移动的点
			dc.MoveTo(lastPoint.x,lastPoint.y);
			dc.LineTo(point.x,point.y);

			dc.SelectObject(&oldpen);						//将画笔选入DC,SelectObject函数返回先前画笔
			//这里标亮要移动的点
			dc.MoveTo(lastPoint.x,lastPoint.y);
			dc.LineTo(templastPoint.x,templastPoint.y);
			//这里删除上一个点
			dc.MoveTo(templastPoint.x,templastPoint.y-6);
			dc.LineTo(templastPoint.x,templastPoint.y+6);
			dc.MoveTo(templastPoint.x-6,templastPoint.y);
			dc.LineTo(templastPoint.x+6,templastPoint.y);

			templastPoint=point;
			::ReleaseDC(m_hWnd,dc);
		}

		return 1;
	}
Example #3
0
	//函数功能:图像中移动线
	//参数:坐标点
	long CMapEditor10View::MoveLin(CPoint point)			 //
	{	
		int i;
		POINT pt;
		POINT lins[500];
		if(step==0)
		{
			startPnt.x=0;
			startPnt.y=0;
			return (0);
		}
		else if(step==1)
		{
			CClientDC dc(this);							//获得本窗口或当前活动视图
			CPen newpen(PS_SOLID,2,linColor);	//构造画笔对象
			dc.SetROP2(R2_NOTXORPEN);
			CPen *pOldPen=dc.SelectObject(&newpen);		//将画笔选入DC,SelectObject函数返回先前画笔

			long disX=point.x - startPnt.x;				//计算坐标偏移
			long disY=point.y - startPnt.y;

			for(i=0;i< LinPntNum;i++)
			{
				if(i==0)
					dc.MoveTo(linPnt[i]);
				else
					dc.LineTo(linPnt[i]);

				pt.x=linPnt[i].x + disX;
				pt.y=linPnt[i].y + disY;

				lins[i]=pt;
			}
			CPen oldpen(PS_SOLID,2,linColor);		//构造画笔对象
			dc.SelectObject(&oldpen);						//将画笔选入DC,SelectObject函数返回先前画笔

			for(i=0;i<LinPntNum;i++)
			{
				linPnt[i]=lins[i];
				if(i==0)
					dc.MoveTo(lins[i]);
				else
					dc.LineTo(lins[i]);
			}


			startPnt=point;
			::ReleaseDC(m_hWnd,dc);
		}
		return (1);
	}
void LineNumberWidget::paintEvent( QPaintEvent* /*e*/ )
{
int max=0;
int l=0;
QPainter painter( this );
painter.setFont(numfont);
const QFontMetrics fm(numfont);
int yOffset = m_editor->verticalScrollBar()->value();
QTextDocument *doc = m_editor->document();
int i = 1;
QTextBlock p = doc->begin();
QString numtext;
const QBrush oldbrush=painter.brush();
QPen oldpen(QColor("#136872"));
oldpen.setStyle(Qt::SolidLine);
painter.setPen(oldpen);
painter.drawLine(width()-2,0,width()-2,height());
while ( p.isValid() ) 
	{
	QPointF point = p.layout()->position();
	if ( point.y() + 20 - yOffset < 0 ) 
		{
		i++;
		p = p.next();
		continue;
		}		
	if ( (int)(point.y()) - yOffset > height() ) break;
	for (int j = 0; j < 3; ++j)
		{
		if (m_editor->UserBookmark[j]==i) 
 			{
			const QBrush brush(QColor("#1B8EA6"));
			painter.fillRect(2, (int)(point.y()) - yOffset,fm.width("0")+6,fm.lineSpacing(), brush);
			const QPen pen(QColor("#FFFFFF"));
			painter.setPen(pen);
			painter.drawText(4, (int)(point.y()) - yOffset,width()-4,fm.lineSpacing(),Qt::AlignLeft | Qt::AlignTop,QString::number(j+1));
 			}
		}
	painter.setPen(oldpen);
	numtext=QString::number(i);
	painter.drawText(0, (int)(point.y()) - yOffset,width()-4,fm.lineSpacing(),Qt::AlignRight | Qt::AlignTop,numtext);
	l= fm.width(numtext)+18+fm.width("0");
	if (l>max) max=l;
	i++;
	p = p.next();
	}
	if (i>=10000) setFixedWidth(max);	
painter.end();
}