今確認してみましたが、DrawTile 関数は正常に動作しないようになっていました。
長い間正常に動作するようになっていなかったみたいで、かつてこの関数が
どのような仕様だったのかを引数ととりあえず修正しただけの動作では推測することができませんでした。
なので、とりあえず Himaさんがご希望される処理をするサンプルプログラムを作ってみました。
LoadGraph( "64.bmp" ) ; と書かれている部分を、存在する画像ファイル名に変えてみてください
恐らく貼っていただいたリンク先の動画と同じ見た目の処理が実現できていると思います。
#include "DxLib.h"
// 画面いっぱいに画像を描画する
// zx, zy : ずらすドット数
int DrawTileGraph( int zx, int zy, int GrHandle )
{
int w, h, NumX, NumY, i, j, dx, dy ;
// 画像のサイズを得る
GetGraphSize( GrHandle, &w, &h ) ;
// ずらすドット数を画像のサイズで割って、その余りを zx, zy に代入する
zx %= w ;
zy %= h ;
// 縦横に描画する数を算出する
NumX = 640 / w + 2 ;
NumY = 480 / h + 2 ;
// 数だけ描画
dy = -zy ;
for( i = 0 ; i < NumY ; i ++, dy += h )
{
dx = -zx ;
for( j = 0 ; j < NumX ; j ++, dx += w )
{
DrawGraph( dx, dy, GrHandle, FALSE ) ;
}
}
// 正常終了
return 0 ;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int handle, zure;
// ウインドウモードで起動
ChangeWindowMode( TRUE );
// DXライブラリの初期化
if( DxLib_Init() < 0 ) return -1;
// 画像の読み込み
handle = LoadGraph( "64.bmp" );
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK );
// メインループ(何かキーが押されたらループを抜ける)
zure = 0 ;
while( ProcessMessage() == 0 && CheckHitKeyAll() == 0 )
{
// ずらすドット数を変化させる
zure += 2 ;
// 画面のクリア
ClearDrawScreen();
// 画面いっぱいに描画
DrawTileGraph( zure, zure, handle ) ;
// 裏画面の内容を表画面に反映
ScreenFlip();
}
// DXライブラリの後始末
DxLib_End();
// ソフトの終了
return 0;
}