質問

ウィンドウの周りでビットマップをすばやく移動して、移動中に背景を復元できるC ++コードを探しています。現在、アプリの初期化中にウィンドウの内容をビットマップにキャプチャし、OnPaint()でこのビットマップを描画してから、オーバーレイされたビットマップを描画します。ペイントをダブルバッファリングしています。オーバーレイされたビットマップの位置は、ウィンドウを無効にするマウスとともに移動します。

これは正常に機能しますが、バックグラウンドウィンドウが大きく(Windowsデスクトップを考えてください)、PCが遅い場合は遅すぎます。私の推測では、マウスを動かすたびに大きな背景ビットマップを再描画するのがボトルネックだと思います。これを行うにははるかに優れた高速な方法が必要ですが、検索では必要な答えが見つかりませんでした。

役に立ちましたか?

解決

おそらく最も簡単な方法は、移動可能な画像を1つのビットマップに保存してから、同じサイズの2番目の一時ビットマップをメモリに保持することです。可動ビットマップをメイン画像上に描画するには、まずBitBlt API関数を使用して、可動ビットマップを描画しようとしている領域を一時ビットマップにコピーし、次に可動ビットマップをメイン画像にBitBltします。移動可能なビットマップを移動すると、1)一時ビットマップを元の場所にBitBlt、2)一時ビットマップに新しい場所をBitBlt、3)メインビットマップの新しい場所に移動可能な画像をBitBltします。

他のヒント

画像リストをご覧ください。 ドラッグ 効果

  

Win32 APIには、   画面上の画像をドラッグします。の   ドラッグ機能は画像を移動します   スムーズに、色で、なしで   カーソルの点滅。両方マスク   マスクされていない画像はドラッグできます。

もちろん、ユーザーは実際に画像をドラッグする必要はありません。画像の位置を変更して、 それを行います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top