2013-07-18 10 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

ありがとう@ペッペ!キャッシングについては何も設定していないので、デフォルトになっていると思います。これは、以前のようなものの例です(https://lh6.googleusercontent.com/-e2pH06jhy94/Ue09l8A1SWI/AAAAAAAAY08/YGa-wj9ollY/w958-h599-no/Fullscreen+capture+7222013+100003+AM.jpg )(1:1ピクセル比率)と[after](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