3

私は Ubuntu 14.04 プラットフォームを使用しています。スクリーンキャスト プロジェクト用にラバーバンドを作成しようとしています。xlib を使用したラバーバンディングの例を見つけましたが、マウスをドラッグしているときにちらつきが発生し、四角形が部分的に欠けていました。それは私のシステムに固有のものなのか、それとも非推奨の xlib ライブラリなのか? それを修正するための回避策はありますか?

また、imagemagic の画面位置取得コマンドimport window.miffも同じようにちらつきます。

ちらつく長方形

ここに私が試したコードがあります

x定規

xrectsel

4

3 に答える 3

4

バックグラウンドの端末が自分自身を再描画しているように見えます。あなたは常に利己的であり、XGrabServer()ウィンドウの移動/サイズ変更時に長方形を使用するWMが行う. グラブを放すまで、画面上の他のもの (クロック、負荷モニター) は更新されません。

サーバーグラブは避けるべきです。--grab/--nograb視覚的なアーティファクトを回避するか、他のアプリケーション (ムービー プレーヤー、ロード モニター、時計など) にラバーバンディング中に画面を更新させるかをユーザーが決定できるようにするオプションを追加することができます。

もう 1 つのオプションは、アウトライン化された長方形の代わりに半透明のウィンドウを使用することです。これは、最新のウィンドウ マネージャーがラバーバンドの代わりに実際のウィンドウを使用してウィンドウを移動/サイズ変更する傾向があるのと同様です (操作が実行される前にウィンドウを何度も再描画することを意味する場合でも)。ラバーバンドを使用したリモート X の移動/サイズ変更は、明らかに動作が優れています)。

XGrabServer()不快な例:

于 2014-08-08T10:21:41.920 に答える
1

GC で xor を使用すると、まったく同じものを再度描画することで、線を選択的に消去できます。ウィンドウ全体を再描画する必要はありません。

XSetFunction(dpy,gc,GXxor); // sets xor mode

いくつかのバッファーを設定し、描画したもののコピーを保持して、もう一度実行できるようにします (色を含む)。

私は昨年これを書きました: https://www.raspberrypi.org/forums/viewtopic.php?p=1317849 最後の 50 行を循環バッファーに保存し、再描画して消去します。不完全な消去アーティファクトなしで何時間も実行できます。そして非常に低いCPU使用率。ほぼ xscreensaver の品質です。 ここに画像の説明を入力

于 2018-08-21T23:59:13.843 に答える