C#でタイルベースのマップエディタを作成すると、X、Y軸を繰り返し処理し、Graphics.DrawImage()を呼び出して、タイルセットのビットマップからマップのビットマップに1つのタイルを配置します。このプロセスは完了するまでに数秒かかります。新しい地図を読み込んだり、タイルセットを変更したりするときに一度だけ行います。そこからの編集は、編集されたタイルだけの比較的高速なブリットです。このタイルブリッタはもっと速くなりますか?
今、私は今日前に戻ってきて、自分の選択肢について考えました。 Graphics.DrawImage()は、3つのうちの唯一のものです(DrawImageUnscaledとDrawImageUnscaledAndCropped(?)である)、ソース原点の指定が可能です。 DrawImageUnscaled()は大いにより速くでしたが、常にソースビットマップの左上からblittedされました。
WinAPIの者とsetPixel対 POKEing対のQuickBasic PSETの速度のビデオメモリを搭載したシャープは対照的に、またはVB6のPSET、簡単な取得/とsetPixelループが早くDrawImageUnscaledコールようだったが、唯一のdrawImageがあろうとトリミングでしたさもなければ。
これは今のところ十分速いですが、私は直接画像操作のようなものがさらにスピードを上げることができるかどうか疑問に思っていましたか? LockBitsでおそらく何か、私は何も知らない機能について知っていますか?
これはあなたの質問に対する答えではありませんが、イメージの長方形全体(X、Y、幅、高さ)を定義することによってDrawImageの速度を上げることができます。私のテストでは、私は約20%のスピードアップを達成しました。 –