プログラム側でクリッピング
今回のサンプルの注目すべき点は「スクロール」では無く、画面の端っこのほうに表示している「完全でない画像」です(謎。
今まで、BltFast関数を使用した自作関数Bltでは、転送先で少しでも画像がはみ出てしまうと、何も表示されなくなってしまいます。
で、画面から少しでもはみ出してしまった場合、はみ出ていない部分を表示させる処理がクリッピングと言われています(たぶん)。
この自作関数では、転送前に転送先の座標と縦幅、横幅からはみ出している部分を検出し
、うまく表示出来るように値を変更しています。まぁ、見りゃ解りますね(^^;ついでなので
クリッピングの範囲を変更出来るようにもしておきました。この自作関数では、どこのサーフェイスでも適応されます。
使用例はこんな感じでしょうかね
今回は、プログラム側でクリッピングを行いました。その理由として、DirectDraw側で
クリッピングを行うと、家の環境で試したところ、速度がガタ落ちしたからです。プログラムで処理した方がよっぽど早いですし
、応用も利きます。ただし、この方法にも欠点はあります。それは拡大縮小を行った時にクリッピング出来ないという点です。
というわけで、次回では一応DirectDrawでのクリッピング方法を説明します(私は使ってませんけど)。