2013-07-18 28 views
5

Ponownie zaimplementowano QGraphicsView, aby uzyskać powiększenie sceny o zdarzenie kółka myszy. Scena zawiera kilka obiektów: QGraphicsPixmapItem. Zdarzenie na kółkach wywołuje QGraphicsView :: scale (qreal sx, qreal sy)Antyaliasing nie działa w QGraphicsView

Wszystko działa idealnie, ale renderowanie. Gdy pomniejszam (scena staje się mniejsza), pojawia się aliasing. Próbowałem ustawienie podpowiedzi czynią następująco w re-wdrożone QGraphicsView konstruktora:

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

wciąż widzę te artefakty. Jak mogę się tego pozbyć?

+0

Czy możesz opublikować zrzut ekranu z tego, co się dzieje? Czy ustawiasz jakąkolwiek strategię buforowania na przedmiotach? – peppe

+0

Dziękujemy @peppe! Nie ustawiam niczego w buforowaniu, więc domyślam się, że to jest domyślne. Oto przykład, jak to wygląda [wcześniej] (https://lh6.googleusercontent.com/-e2pH06jhy94/Ue09l8A1SWI/AAAAAAAAY08/YGa-wj9ollY/w958-h599-no/Fullscreen+capture+7222013+100003+AM.jpg) (Stosunek pikseli 1: 1) i [po] (https://lh4.googleusercontent.com/-PZJVX0jl6yw/Ue09mo_Iu2I/AAAAAAAAY1E/nMf28uA9MlE/w958-h599-no/Fullscreen+capture+7222013+100007+AM.jpg) (stosunek pikseli mniejszy niż 1: 1) pomniejszanie. Zobaczysz pewne aliasing w koncentrycznych kręgach. – Algo

Odpowiedz

3

Proszę zobaczyć moje komentarze do this question.

Zasadniczo musisz zadzwonić pod numer setTransformationMode(Qt::SmoothTransformation), aby zastosować funkcję wygładzania.

Zadzwoń pod numer setRenderHints w widoku nie działa również dla mnie.

+0

Więc nie ma sposobu, aby uzyskać tło antyaliasingu? Edycja: Nm było błędem w moim kodzie. – Timmmm