通常背景を右上から左下にスクロールさせてななめに
流れるようにしたいのですがうまくいきません。どうしたらできますか?
void graph_back00(){//通常背景
SetDrawArea( 32 , 16 , 416 , 464 ) ;//描画可能エリアを設定
DrawGraphFd(0,count%700-700,img_back[0],FALSE);
DrawGraphFd(0,count%700 ,img_back[0],FALSE);
SetDrawArea( 0, 0, 640, 480);//エリアを戻す
}
背景をななめに
Re:背景をななめに
DrawGraphFd関数の中がわかんないけど第一引数を-(count%300)にしたらそれっぽい動きになるんじゃないでしょうか。
多分縦横4枚表示になるよ。
多分縦横4枚表示になるよ。
Re:背景をななめに
暇だったんで、作ってみました。
とりあえず、自分で点p(x1,y1) , 点Q(x2,y2)を指定します。
(x2>x1 && y2>y1が条件です。)
すると、用意した背景が(x2,y1)から(x1,y2)に向かって移動します。
(希望していた右上から左下にスクロール)
とりあえず、角を中心に画像がスクロールすることに重きを置いたので、
座標指定によってはぶるってしまう時があります。
まぁ、仕様ってことでw
条件以外の動作は未定義です。っというか、かならず止まります。
気を付けてください。
あとは、自分で工夫してみてください。
(※かなり汚く書かれてます。あくまで参考に・・・)
#追記
draw_areaシリーズが指定座標です
とりあえず、自分で点p(x1,y1) , 点Q(x2,y2)を指定します。
(x2>x1 && y2>y1が条件です。)
すると、用意した背景が(x2,y1)から(x1,y2)に向かって移動します。
(希望していた右上から左下にスクロール)
とりあえず、角を中心に画像がスクロールすることに重きを置いたので、
座標指定によってはぶるってしまう時があります。
まぁ、仕様ってことでw
条件以外の動作は未定義です。っというか、かならず止まります。
気を付けてください。
あとは、自分で工夫してみてください。
(※かなり汚く書かれてます。あくまで参考に・・・)
#追記
draw_areaシリーズが指定座標です
Re:背景をななめに
さらに暇だったので、関数化して、不具合をいろいろ修正しました。
int DrawBackScroll(int x1 , int y1 , int x2 , int y2 , int ghandle , int mode , int bc_bc_color=0 )
(x1,y1)と(x2,y2)の間で指定したモードで背景がスクロールする。
また、スクロール背景の背景も指定できる。
[引数]
int x1 , int y1 , int x2 , int y2 … 座標
(x1,y1)と(x2,y2)で四角形をなせば、その四角形の範囲でスクロールする。
四角形をなさない場合は、デフォルトで、
(0,0) , (W_SIZEX,W_SIZEY)の四角形で行う。なので、
const int W_SIZEX = 640;
const int W_SIZEY = 480;
などの宣言が関数内もしくはグローバルで宣言が必要
int ghandle … 画像ハンドル
int mode … スクロールする向き
0=右上から左下
1=右下から左上
2=左上から右下
3=左下から右上
(自分のプログラムでは、列挙体で管理しています。)
int bc_bc_color=0 … スクロール背景の背景の色
(デフォルトでなしです)
[戻り値]
意味なし
int DrawColorFrame(int X1,int Y1,int X2,int Y2,int color)
(x1,y1)と(x2,y2)の範囲外の領域をcolorで塗りつぶす
[引数]
int X1,int Y1,int X2 int Y2 … スクロール背景の範囲
主な詳細はDrawBackScrollと同じ
int color … 塗りつぶす色
[戻り値]
意味なし
っとこんな仕様です。(もちろん、DXライブラリ使用)
あとは、自分で角度とか調節できるようにすれば、
もう少し使いやすくなるかも。今回はこれで^^;
っというか、質問内容が龍神っぽかった(?)ので、
質問回答にはなってません。。失礼しました。。
#補足
DrawBackScrollで、背景のつなぎをかなりアバウトに行っていて、
背景を管理人さんの配布している龍神の背景を用いると、
結構つなぎ目が気になります。これは各自調節してください。
(ドット補完のあたり)
自分の組み方だと、時々刻々微妙に背景が揺れていますので、
なかなか完璧につなぐのは難しいかもです・・・
int DrawBackScroll(int x1 , int y1 , int x2 , int y2 , int ghandle , int mode , int bc_bc_color=0 )
(x1,y1)と(x2,y2)の間で指定したモードで背景がスクロールする。
また、スクロール背景の背景も指定できる。
[引数]
int x1 , int y1 , int x2 , int y2 … 座標
(x1,y1)と(x2,y2)で四角形をなせば、その四角形の範囲でスクロールする。
四角形をなさない場合は、デフォルトで、
(0,0) , (W_SIZEX,W_SIZEY)の四角形で行う。なので、
const int W_SIZEX = 640;
const int W_SIZEY = 480;
などの宣言が関数内もしくはグローバルで宣言が必要
int ghandle … 画像ハンドル
int mode … スクロールする向き
0=右上から左下
1=右下から左上
2=左上から右下
3=左下から右上
(自分のプログラムでは、列挙体で管理しています。)
int bc_bc_color=0 … スクロール背景の背景の色
(デフォルトでなしです)
[戻り値]
意味なし
int DrawColorFrame(int X1,int Y1,int X2,int Y2,int color)
(x1,y1)と(x2,y2)の範囲外の領域をcolorで塗りつぶす
[引数]
int X1,int Y1,int X2 int Y2 … スクロール背景の範囲
主な詳細はDrawBackScrollと同じ
int color … 塗りつぶす色
[戻り値]
意味なし
っとこんな仕様です。(もちろん、DXライブラリ使用)
あとは、自分で角度とか調節できるようにすれば、
もう少し使いやすくなるかも。今回はこれで^^;
っというか、質問内容が龍神っぽかった(?)ので、
質問回答にはなってません。。失礼しました。。
#補足
DrawBackScrollで、背景のつなぎをかなりアバウトに行っていて、
背景を管理人さんの配布している龍神の背景を用いると、
結構つなぎ目が気になります。これは各自調節してください。
(ドット補完のあたり)
自分の組み方だと、時々刻々微妙に背景が揺れていますので、
なかなか完璧につなぐのは難しいかもです・・・