2009-08-26 11 views
0

.NET GDI +ビットマップオブジェクトがある(または問題がWPFビットマップオブジェクトを簡単にする場合)、何をしたいのかはdx、dy(全体ピクセル)と私は理想的には.NETを使用してそれを行うが、API呼び出しが大丈夫です。 適度に大きなビットマップで10,000回呼び出されると効率的でなければなりません。.NET内のビットマップを自動的にスクロールまたはシフトする

私はDrawImageを使用してソリューションを実装しましたが、遅くてGCが使用された一時オブジェクトをクリーンアップしている間、アプリケーションは数分間停止します。

私はScrollDCを使ってバージョンを作成し始めましたが、これまでビットマップのDC上で動作させることはできませんでした(ビットマップハンドルでAPIビットマップを作成してから、互換性のあるDC asndはScrollDCを呼び出していますが、ビットマップオブジェクトに戻す必要があります)。

「インプレース」の方法でビットマップをシフトする必要があります。 mikej

答えて

0

Graphics.FromImageメソッドが見つかりましたか?これにより、ビットマップを直接操作できます。私はあなたがDrawImageで何を使っているのかよく分かりませんが、Graphics.DrawImageはビットマップの領域をそれ自身にコピーする必要があります。

また、Graphicsオブジェクトを指定すると、Graphics.GetHdc、ScrollDC、およびGraphics.ReleaseHdcを使用できます。

0

グラフィック全体を移動したいだけですか? DrawImageにはx、yパラメータがあります。私はおそらくあなたの質問を正しく解釈していないでしょう。

1万枚の画像で作業しているときは、GDIは効率的ではありません。リアルタイムのパフォーマンスに近いところにいれば、アルゴリズムを修正したり、3D API(DirectXやOpenGLなど)、あるいはその両方を調べる必要があります。

0

申し訳ありませんが、私の質問があまりにも明確ではない場合。 私がしようとしているのは、ビットマップをスクロールしてシフト操作を行うことです。 たとえば、Scroll(B、1,0)のようなメソッドは、ビットマップB全体を1ピクセル右にシフトします。

私はDrawImageとScrollWindowEx APIコールの両方を使って約10倍の速さで合理的な解決策を得ています。

私は、WPFを使用してより速く何かを行うことができるかを考えています。

0

私はScrolling a bitmapに問題を解決するために私の解決策を書いてきましたが、もっと良い方法がないとわかりません。

関連する問題