問題タブ [qregion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - QPaintEvent - 画面の領域のみを更新する
私のコードでは、アプリが GPS 座標を取得するたびにポイントを描画しようとしています。ポイントは、「i」ピクセルだけ右および下に移動します。描画したままにしたいのですが、更新する必要がある画面上の領域を指定するための QRegion パラメータを使用しているにもかかわらず、画面全体が常に更新されているようです。助けてくれる人はいますか?私はこれが本当に初めてで、何が悪いのかわかりません。
このアクションを処理するクラスは次のとおりです。
qt - setMask の QRegion のトリミング
私は
サークルsetMask()
を作っていますQRegion
QRect
そして今、私はQRect(43,0 93x110)
前の領域から切り取ってsetMaskingに使用する必要がある小さなwidgetRectを持っています。
私がしているcircleRegion.intersected(widgetRect)
ことは、私に適切な結果を与えていません。私はパイ地域を期待しています。どこに行方不明ですか?
c++ - QGraphicsView::update( const QRegion& ) によってウィジェット全体が更新されるのはなぜですか?
描画に多くの処理が必要な大規模で複雑なグラフィックス ビューがあるため、フレームごとにその一部 (OpenGL ビデオ ディスプレイ) のみを再描画し、残り (さまざまな子ウィジェットなど) は変更しません。
ただし、QRegion で update() を呼び出すと、paintEvent の領域がウィジェットのフル サイズになるため、画面全体が毎回再描画されます。パラメーターなしで update() を呼び出すことはないようです (少なくとも、私のバージョンではありません)。
ペイント イベントで全画面が表示される原因は何ですか?
出力:
編集:
また、viewportUpdateMode を SmartViewportUpdate に設定して、update(QRegion) の代わりに updateScene(QList) を使用してみましたが、paintEvent の領域はまだ画面のフル サイズです。CacheMode は CacheNone に設定されており、それを CacheBackground に設定すると、OpenGL が表示されなくなります。