1. 목표Qt에서 회전 된 타원을 렌더링하려는 시도가 잘못되었습니다.
내 동료와 나는 Qt는 회전 타원체를 렌더링하기 위해 노력 해왔다. 전형적인 솔루션 접근 방식은 우리가 그것을 이해, 좌표계의 원점에 타원체의 중심 이동이 회전을하고, 다시 이동으로 구성 http://qt-project.org/doc/qt-4.8/qml-rotation.html
2. 샘플 코드
은 위의 링크에 설명 된 솔루션을 바탕으로, 우리는 다음과 같은 샘플 코드를 내놓았다 : 당신이 볼 수 있듯이, 우리는 하드 회전 각도를 코딩 한
// Constructs and destructors
RIEllipse(QRect rect, RIShape* parent, bool isFilled = false)
: RIShape(parent, isFilled), _rect(rect), _angle(30)
{}
// Main functionality
virtual Status draw(QPainter& painter)
{
const QPen& prevPen = painter.pen();
painter.setPen(getContColor());
const QBrush& prevBrush = painter.brush();
painter.setBrush(getFillBrush(Qt::SolidPattern));
// Get rectangle center
QPoint center = _rect.center();
// Center the ellipse at the origin (0,0)
painter.translate(-center.x(), -center.y());
// Rotate the ellipse around its center
painter.rotate(_angle);
// Move the rotated ellipse back to its initial location
painter.translate(center.x(), center.y());
// Draw the ellipse rotated around its center
painter.drawEllipse(_rect);
painter.setBrush(prevBrush);
painter.setPen(prevPen);
return IL_SUCCESS;
}
30도이 테스트 샘플.
3. 관찰
타원은 자주 캔버스 영역 이외의 잘못된 위치에 나올.
4. 질문
위의 샘플 코드에 대한 문제가 있습니까?
안부,
발더스
P.S. 건설적인 반응에 미리 감사드립니다.
P.P.S. 이 메시지를 게시하기 전에 우리는 stackoverflow.com에서 많은 내용을 검색했습니다. Qt image move/rotation은 위의 링크와 비슷한 솔루션 접근 방식을 반영한 것으로 보입니다.
'translate' 함수는 여러분이 생각하는 것과는 반대로 작용한다고 생각합니다.전달할 값을 무시해보십시오. – paddy
감사합니다. @paddy! – user2514673