#include "bezier.h" scene=new QGraphicsScene; scene->setSceneRect(0,0,500,500); setScene(scene); scene ->setBackgroundBrush(QBrush(Qt ::black)); for(int m=0;m<=3;m++){ if(m<2){ ellipse =scene ->addEllipse(0,0,6,6,Qt ::DotLine,QColor(Qt ::white)); ellipse->moveBy((m+1)*150,200); ellipse->setCursor(Qt::SizeAllCursor); points<<ellipse; } else{ ellipse =scene ->addEllipse(0,0,6,6,Qt ::DotLine,QColor(Qt ::white)); ellipse->moveBy((m-1)*200,400); ellipse->setCursor(Qt::SizeAllCursor); points<<ellipse; } } startTimer(5); scene->addItem(&curve); drawCurve(); drawLines(); } //==================================== void bezier::drawCurve(){ path.moveTo(points[0]->x()+3,points[0]->y()+3); path.cubicTo(points[2]->x()+3,points[2]->y()+3,points[3]->x()+3,points[3]->y()+3,points[1]->x()+3,points[1]->y()+3); curve.setPath(path); curve. setPen(QPen(Qt ::darkGreen,4));} //=============================================== void bezier::drawLines(){ if(lines.count()<3){ lines <<scene ->addLine(points [0]->x()+3,points [0]->y()+3,points [1]->x()+3,points [1]->y()+3,QPen(Qt ::white,1,Qt ::DotLine)); lines <<scene ->addLine(points [0]->x()+3,points [0]->y()+3,points [2]->x()+3,points [2]->y()+3,QPen(Qt ::white,1,Qt ::DotLine)); lines <<scene ->addLine(points [3]->x()+3,points [3]->y()+3,points [1]->x()+3,points [1]->y()+3,QPen(Qt ::white,1,Qt ::DotLine)); lines <<scene ->addLine(points [2]->x()+3,points [2]->y()+3,points [3]->x()+3,points [3]->y()+3,QPen(Qt ::white,1,Qt ::DotLine)); } else{ lines[0]->setLine(points[0]->x()+3,points[0]->y()+3,points[1]->x()+3,points[1]->y()+3); lines[1]->setLine(points[0]->x()+3,points[0]->y()+3,points[2]->x()+3,points[2]->y()+3); lines[2]->setLine(points[3]->x()+3,points[3]->y()+3,points[1]->x()+3,points[1]->y()+3); lines[3]->setLine(points[2]->x()+3,points[2]->y()+3,points[3]->x()+3,points[3]->y()+3); } } //=========================================== drawLines(); drawCurve(); }
|