3

Qt の でアンチエイリアシング レンダリングを使用すると、描画がQGraphicsScene期待どおりに表示されない動作があります: 重なっている線が暗くなります。ドキュメントでこの動作の説明を見つけることができませんでした。また、無効にする方法が見つかりません。

たとえば、そのようなポリゴンを描画したい場合:

ポリゴン

ポイントの数が多いため、線が重ならないようにすることはできません。ただし、アンチエイリアスが有効になっているため、一部の境界線は他の境界線よりも「太く」表示されます。

これを回避し、アンチエイリアス処理された線をオーバーラップさせながら、同時に暗くならずにレンダリングする方法はありますか?

もちろん、関数を再定義して、重複しない個々の線を手動で描画できることは知ってpaint()いますが、これは避けたいことです。私は Pyside を使用していますが、paint()呼び出される頻度が高いため、アプリケーションの速度が大幅に低下します。

編集QPainterPath/QGraphicsPathItemの代わりにQPolygon/を使用してオブジェクトの形状を定義することで修正されましたQGraphicsPolygonItem。その場合、このmoveTo機能により、線が重なるのを避けることができます。

4

1 に答える 1

0

あなたが試すことができるもう1つのことは、座標(寸法ではなく)に半分のピクセルを追加することです。これにより、アンチエイリアスの問題が修正されました。

XCoord = int(XValue) + 0.5
YCoord = int(XValue) + 0.5

また、その前に整数のピクセル値があることを確認してください。

于 2013-07-03T08:35:55.313 に答える