2014-09-16 8 views
3

선 그리기에 문제가 있습니다. 마우스가 천천히 움직일 때 잘 작동하지만 마우스가 더 빨리 움직일 때 약간의 간격이 생기며 그 이유는 모르겠습니다. 이 코드입니다 : 왼쪽 오른쪽 빠르게, 느리게 drawed입니다QT를 사용하여 QGraphicsScene의 선 그리기

enter image description here

: 여기

if(QEvent::MouseButtonPress&&event->buttons()==Qt::LeftButton){ 
QPointF pt=mapToScene(event->pos()); 
     band->setGeometry(0,0,0,0); 
     band->hide(); 
     band->update(); 
     this->scene()->addLine(pt.x(),pt.y(),pt.x(),pt.y(),QPen(color, size)); 
    qDebug()<<event->pos(); 
} 

하는 스크린 샷입니다.

답변

3

정말 흥미로운 질문입니다. 나는 내 컴퓨터에서 똑같은 일을하고 같은 문제를 겪는다. 코드 깊이를 읽지는 않습니다. 서브 클래스가 QGraphicsView 인 것 같지만 서브 클래스는 QGraphicsScene이지만 중요하지는 않습니다. 나는 당신에게 주요 아이디어를 말한다. 나는 당신을 다음에 제안 할 수있다 :

그러나, 사용자 끝 그림을 그릴 때, 당신은 이것을 제거하고이 간격없이 1 개의 아주 아름다운 곡선을 당긴다. 당신은 mouseReleaseEvent를 사용해야합니다

mouseMoveEvent에서 :

QPoint pos = mouseEvent->scenePos().toPoint();//just get point 
    pol.append(pos);//append to polygon 
//...draw lines or what you want 

생성자에서 : 당신이 그것에, 다각형을 부하를 QPainterPath을 만들고 틈없이 정상 선을 그립니다

QPolygon pol; 

mouseReleaseEvent에서.

void GraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent) 
{ 
    QPainterPath myPath; 
    myPath.addPolygon(pol); 
    addPath(myPath,QPen(Qt::red,2)); 
    pol.clear(); 
} 

는 결과 :

나는 매우 빠르게 이동 간격 (현재 내 마우스 버튼을 누를 때) 얻을

enter image description here

지금 내 버튼을 해제하고 정상적인 곡선을 얻을

enter image description here

+0

대단히 감사합니다. :) –