問題タブ [double-buffering]
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# - パネルのダブルバッファリングを作成するにはどうすればよいですか?
ちらつきを取り除くためにダブルバッファリングを実行しようとしていますが、画像のちらつきを再描画します。新しい場所のバーに周期的に画像を再描画する必要があります。これでうまくいきます。しかし、非常に目立つちらつきを再描画するとき。助けてください。
c# - PropertyGrid の Color フィールドが非常に遅い
PropertyGrid
フィールドの 1 つであるオブジェクトを表示していますSystem.Drawing.Color
。これにより、PG のフィールドに自動的に色が表示され、クリックして編集すると、カスタム カラーやシステム カラーなどを示す素敵なドロップダウンが表示されます。問題は、このドロップダウンに約 10 ~ 30 秒かかることです。描画する - カスタム色のものは特に悪いです。遅さを隠すためにPGにダブルバッファリングを設定しようとしましたが、表示する前に描画中に一時停止するだけで、速度は向上しません。他のすべてが完全に正常に動作しているときに、この特定の機能が非常に遅くなる理由はありますか?
私はこのプログラムを通信する別のプログラムと一緒に実行しています。そのプログラムは確かにプロセッサを多用する 3D レンダリング エンジンを使用していますが、ほとんどの場合、それほど悪くはありません。現在、耐えられないほど遅いのは、色のドロップダウンだけです。何が原因なのか想像できません。
wpf - WinForms-絵画のようなWPF
ユーザーがマウスを使用して長方形をペイントできるWPFアプリケーションを作成するのがいかに簡単であるかをよく知っています。これを行うには、Rectangleコントロールを作成してその座標を設定するだけで、DoubleBufferingや再描画などについて心配する必要はありません。ユーザーがさまざまな形状をペイントできるアプリケーションにWPFを使用できることを非常に嬉しく思いますが、クライアントはWinFormsアプリケーションであると主張しています。したがって、ここでの解決策は、古き良きWinAPIの年のようにXORまたはROP演算を使用することであり、私はこれがあまり好きではありません。これでは、XORモードでテキストを移動するための優れたオプションは提供されません。
そのため、WPFの場合と同じように、WinFormsアプリケーションでスムーズなペイントエクスペリエンスを実現するにはどうすればよいかを考えていました。このようなコードをまとめると、残りのオブジェクトはそのままにして、現在の形状をペイントする別のレイヤーを作成したいと思いました。私はiPadアプリケーションで同じテクニックを使用し、かなりうまく機能しました。
コースが必要に応じて機能しない場合。マウスを押すと、透明なパネルではなく黒いパネルが表示されます。さらに、DoubleBufferingを設定したにもかかわらず、ペイント中の長方形がちらつきます。
誰かがそのような実装のより良いアイデアを提供できますか、あるいは他の人々がどのようにやっているかを見ることができる他のオープンソースプロジェクトがあるかもしれません。Paint.NETと同じ経験が必要ですが、あまりにも悪いのはもうオープンソースではありません。(私はReflectorを使用できることを知っています、そして私は使用しました、しかし男、あそこにはたくさんのコードがあります:))
どんなアイデアでもThx。
c# - リフレクションを使用してコントロール スタイルを設定する際の効率
バックグラウンド
現在、コントロールが大きすぎてバッファを割り当てられない場合に、ダブル バッファリングによってクラッシュが発生する動作を修正しようとしています。
多くの議論と試行錯誤の結果、サイズがサポートされている場合 (たとえば 3000x3000 ピクセル未満)、コントロールのダブル バッファリングを有効にすることが最善の方法であると判断しましたが、サイズのしきい値を超える場合は、プログラムでダブルバッファリングをオフにします。
GetStyle および SetStyle メソッドは保護されており、ダブル バッファリングを無効にする必要があるサード パーティ製のコントロールが多数あるため、これを行うのはかなり面倒です。これを克服するために、リフレクションを介してダブル バッファリングを無効にするヘルパー メソッドを作成しました。次に、Layout イベントを介してコントロールのサイズを監視し、それに応じて DoubleBuffer フラグと OptimizedDoubleBuffer フラグを設定します。
質問
私はリフレクションにあまり詳しくありません。私の主な質問は、MethodInfo.Invoke メソッドを介して ControlStyles を取得/設定することで、どのようなパフォーマンスへの影響を期待できるかということです。
特に、最初に値を読み取って DoubleBuffer/OptimizedDoubleBuffer ControlStyles を設定しないようにすることが役立つかどうか疑問に思っています (これは、リフレクションを介して GetStyle() を使用して行う必要もあります)。または、毎回 SetStyle() を呼び出すのは基本的に同じですか。Layout イベントが頻繁に呼び出されるので心配です。また、このダブル バッファリング トラッキング ロジックのためだけにパフォーマンスを大幅に低下させたくありません。
特に私がやっていることのパフォーマンスへの影響について、どんな入力も歓迎しますが、特定のサイズを超えた場合にのみコントロールのダブルバッファリングを無効にするためのより良いアイデアを誰かが持っている場合も同様です。
java - JTree のリロード中に点滅する
JTree
頻繁に更新しながらシミュレーターを作っています。ツリーのノードはすべてJProgressBars
.
私はツリーを更新するために呼び出しtree.treeModel.insertNodeInto(,,)
ています。問題は、呼び出しtreeModel.reload()
を待たずに即座に更新されることです。repaint()
これにより、ツリーが点滅します。setDoubleBuffered(true)
ノード、ツリー、およびそれが含まれるコンテナーの設定を試みましたが、何も変わりません。
これが私のコードです:(クラスFile extends DefaultMutableTreeNode
)
qt - QGraphicsView のちらつき
私はガールフレンドの学士論文のために失明プログラムを書きたいと思っていました。Xミリ秒間画像を表示し、短い「ちらつき画像」(この場合は灰色のみ)を表示し、最初の画像とはわずかに異なる画像を表示します。そしてまたちらつき画像。
その後、すべてが最初から始まります。グラフィックアーティファクトだけがあります。キャンバス/ QGraphicsView は、私が思うに十分に速くリフレッシュしないので、リフレッシュ中の「線」です。
画像表示時間:70ms、フリッカー時間:30ms。したがって、100 ミリ秒 = 1 秒あたり 10 FPS です。GPUを使わなくてもこれは可能だと思いました。しかし、そうではないようです。
GPU を回避するためにダブル バッファリングなどを使用できますか? または、QGLを使用する必要がありますか? その約1メガバイトの画像。
私はそれらを一度ロードして、私が思うにそれらを表示します。シーンで間違ったことをしているのかもしれません。
ソースコードを添付します。何かアイデアがあるかもしれません。
敬具 :)
c# - DoubleBuffering は背景を黒くクリアします
BufferedGraphics を使用してフォームに描画していますが、描画を開始すると、初めて描画するときだけ背景が黒くクリアされます。私はピクチャーボックスを使用しており、その画像を新しいビットマップに設定しています。
BufferedGraphics.Graphics.DrawEllipse()
呼び出すと背景が黒くなる理由を知りたいだけです!?
java - この NullPointerException を回避する方法
私は小さなアーケード ビデオ ゲームに取り組んでおり、アニメーションを改善するためにダブル バッファを探しています。空白の画像を描画するクラスと、単純な線を描画するクラスがあります。ただし、線が描画されるはずの行で NullPointerException を取得し続けます
null の Graphics 変数 dbg だと思いますが、この NullPointerException を修正するにdbImage.getGraphics();
はgameRender();
どうすればよいですか?
このような別のクラスで draw() メソッドも呼び出しています
そのクラスのコンストラクターで、mc = new MC(); と言いました。
c++ - QGLWidget でのレンダリングとカラーピッキング: 両方に対処する方法
これよりも優れた解決策があるかどうか疑問に思っています: レンダリング コードとカラー ピッキング コードがあり、これら 2 つのコード (VBO など) 間で共有できるすべてのものを既に共有しており、私のコードは次のようになります。
コードは機能し、ちらつきはユーザーに表示されませんが、率直に言って、コード内の goto のアイデアは貧弱な解決策のように思えます。
他に良いアイデアはありますか?