2012-04-11 8 views
0

wxWidgetsを使用して、大きなフローチャート、つまり625 x 26329ピクセルを描画しています。プログラムはQtからwxWidgetsに転送されました。カスタマイズされたスクロールウインドウが内部にあるメインフレームでレイアウトが簡単です。スクロール・ウィンドウは、更新されたクライアント領域内で毎回グラフの一部を描画します。wxWidgetsが描画をQtより遅く更新するのはなぜですか?

今、QtとwxWidgetsで大きな違いがあります。マウスのローリングで垂直方向にスクロールすると、Qtはグラフを非常にスムーズに描画しますが、wxWidgetsはゆっくりと点滅します。

絵を効率的に作成する方法を教えてもらえますか?

+3

コードを表示したり、使用しているウィジェットやペイントコードの種類を詳しく解説していない限り、そうではありません。心に浮かぶのは、OpenGLを使ってQtでハードウェアアクセラレーションが可能なペイントが可能ですが、wxWidgetsではペイントできません。両方のフレームワークでサポートされています。 – teukkam

+0

私はそう思うかもしれませんが、おそらくQtは私のために大いに役立ちますが、wxWidgetsはそのようなサポートを手動で追加する必要があります。どのようにwxWidgetsを使用してハードウェアアクセラレーションをサポートするか? – allenchen

+0

次に、wxGCDCを使ってアンチエイリアス効果を作ります。塗装効率を得るためにいくつかのパラメータを設定する必要がありますか? – allenchen

答えて

0

あなたはそれが遅いですか?私は不思議に思うでしょう、私は別の経験に遭遇しました。

ちらつきがあります。ちらつきは、ほとんどの場合、リフレッシュコールが多すぎるために発生します。 これを防ぐには、ダブルバッファリングを使用する必要があります。これが鍵です。

ダブルバッファリングは、イメージ/ビットマップにすべてのものを描画し、すべてが描画された後、イメージ/ビットマップが完全に描画されることを意味します(これは本当に高速ですので、ちらつきはありません:)! )。

Qtはデフォルトのダブルバッファリングに使用します。それが毎回滑らかに見える理由です。 しかし、このアプローチの欠点は、パフォーマンスを消費することです。 wxWidgetsはそれに縛られません。代わりに、それはダブルバッファリングを得ることがあなたの仕事だと言います。

また、描画している領域をクリッピングしていないかどうかを確認する必要があります。 Windowsの下でwxWidgetsを使ってクリッピングすると、本当に良いパフォーマンスが得られました。

PS: はい、古い質問ですが、実際の状況を知ることはまだ必要です。

関連する問題