2013-07-18 2 views
5

QGraphicsView을 다시 구현하여 마우스 휠 이벤트로 장면을 확대 시켰습니다. 장면에 여러 QGraphicsPixmapItem이 포함되어 있습니다. 휠 이벤트 호출 QGraphicsView :: scale (qreal sx, qreal sy)QGraphicsView에서 안티 앨리어싱이 작동하지 않습니다.

모든 것이 완벽하게 렌더링되지만 작동합니다. 축소하면 (장면이 작아짐) 앨리어싱이 나타납니다. 나는 다시 구현 를 QGraphicsView 생성자에 다음과 같은 렌더링 힌트를 설정하려 :

ImageViewer::ImageViewer(QWidget * parent) : 
    QGraphicsView(parent) 
{ 
    setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::HighQualityAntialiasing); 
} 

난 아직도 이러한 아티팩트를 참조하십시오. 이걸 어떻게 없앨 수 있습니까?

+0

무슨 일이 진행되고 있는지 스크린 샷을 게시 할 수 있습니까? 항목에 대한 캐싱 전략을 설정하고 있습니까? – peppe

+0

@peppe 감사합니다! 캐싱에 대해서는 아무것도 설정하지 않으므로 기본값이라고 생각합니다. [앞에] 보이는 예입니다 (https://lh6.googleusercontent.com/-e2pH06jhy94/Ue09l8A1SWI/AAAAAAAAY08/YGa-wj9ollY/w958-h599-no/Fullscreen+capture+7222013+100003+AM.jpg).) (1 : 1 픽셀 비율) 및 [후] (https://lh4.googleusercontent.com/-PZJVX0jl6yw/Ue09mo_Iu2I/AAAAAAAAY1E/nMf28uA9MlE/w958-h599-no/Fullscreen+capture+7222013+100007+AM.jpg) (1 : 1 미만의 픽셀 비율) 축소. 동심원에 앨리어싱이 표시됩니다. – Algo

답변

3

내 의견은 this question을 참조하십시오.

기본적으로 앤티 앨리어싱을 적용하려는 QGraphicsItem에서 setTransformationMode(Qt::SmoothTransformation)으로 전화해야합니다.

보기에서 setRenderHints을 호출해도 나에게 적합하지 않았습니다.

+0

안티 에일리어싱 된 배경을 가질 방법이 없습니까? 편집 : Nm 내 코드에서 오류가 발생했습니다. – Timmmm

관련 문제