저는 QGraphicsScene에 QGraphicsPixmapItem을 가지고 있는데,이를 QGraphicsView에서 확대하고 회전합니다. 회전이 없거나 너무 멀리 확대하지 않으면 모든 것이 효과적입니다. 그러나 확대 된 방식으로 (픽셀이 매우 눈에)니다) 이상한 일이 발생하면 회전합니다. 일부는 예상대로 이미지가 보이고, 일부는 픽스맵이 (부분적으로 또는 완전히) 사라지고 시간상의 수평 그래디언트가 이미지에 나타납니다 (이미지가 회전하는 동안에도 수평을 유지함).QGraphicsScene에서 확대/축소 및 회전 된 이상한 그리기 동작
첫번째 이미지는, 부과 별도 계통 (라인 컬렉션) (더 컬러 그라디언트가 없어야) 차트이다. 두 번째 이미지는 나의 최소한의 예제 (아래)에서 나온 것이며 부분적으로 빠진 픽스맵을 보여줍니다 (샷은 픽스맵의 가장자리에서 멀리 떨어져 있습니다).
다음은 내가 보는 대부분을 보여주는 간단한 예입니다. 이 주변
#ifndef VIEW_H
#define VIEW_H
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
#include <QWheelEvent>
#include <QKeyEvent>
class View : public QGraphicsView
{
Q_OBJECT
public:
explicit View(QWidget *parent = 0) :
QGraphicsView(parent)
{
setDragMode(QGraphicsView::ScrollHandDrag);
QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(QPixmap(":/images/chart.png"));
pixmapItem->setTransformationMode(Qt::SmoothTransformation);
QGraphicsScene *scene = new QGraphicsScene();
scene->addItem(pixmapItem);
setScene(scene);
}
protected Q_SLOTS:
void wheelEvent(QWheelEvent *event)
{
if(event->delta() > 0)
scale(1.25, 1.25);
else
scale(0.8, 0.8);
}
void keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Left)
rotate(1);
else if(event->key() == Qt::Key_Right)
rotate(-1);
}
};
#endif // VIEW_H
다른 파일은 이미지의 UI에서보기를 보유하고 QMainWindow 클래스와 리소스 파일, 그리고두고 그 메인은 모두가 Github project에서 사용할 수있는 기본 창 클래스를 실행합니다.
마우스 스크롤 휠을 사용하여 확대하고 화살표 키를 사용하여 회전하려면 (마우스로 이동할 수도 있습니다). 충분히 멀리 확대하고 회전하면 pixmap이 일부 각도에서 (부분적으로 또는 완전히) 사라집니다. 나는이 예에서 그래디언트를 재현 할 수 없었지만, 나는 이것이 동일한 문제의 또 다른 징후 일 뿐이라는 의심을 품고있다.
변환을 SmoothTransformation으로 설정하고 renderHint를 Antialiasing 및 HighQualityAntialiasing으로 설정하려고 시도했지만 어느 것도 큰 효과가 없었습니다. (안티 앨리어싱은 높은 줌에서 들쭉날쭉 한 부분을 부드럽게합니다.) 또한 QGraphicView, QGraphicsScene 관련 도면에서 많은 플래그를 토글하려고 시도했습니다. 아무도 이것이 왜 일어날 수 있는지 또는 내가이 문제를 해결하려고 노력할 수있는 이유를 알고 있습니까?
Qt의 현재 안정적인 버전으로 10/18/16에 다운로드 한 Qt 4.8.2 및 Qt 5.5.1에서이 문제가 발생했습니다.
원본 이미지는 어떻게 생겼습니까? – xaxxon
합법적 인 문제가있는 동안 문제의 원인을 추측 할 수 있습니다. [MCVE] (http://stackoverflow.com/help/mcve)를 제공하면 질문이 크게 향상됩니다. – TheDarkKnight
방금 MCVE를 게시했습니다. png가 포함되어 있습니다. – Chris