トップページ > 過去ログ > 記事閲覧
文字送りがしたい
名前:J 日時: 2013/05/11 04:55

DXライブラリの関数リファレンスをざっと読んでみて 私が行いたい処理の関数が見当たらなかったので、質問させて下さい。 いわゆる、私はRPGのメッセージウィンドウでよく見かける 文字送りというものをしたいと考えてます。 例えば、3行までメッセージを表示させることができる、メッセージウィンドウがあったとして 4行目のメッセージを表示させる場合、 メッセージ全体を上に少しずらしてから4行目のメッセージが表示されることになります。 その時、1行目のメッセージが上に移動されながら消えていくと思います。 それをやりたいと考えているのですが その処理をさせるための関数が見当たらなかったので質問させて頂きました。 なお、メッセージフォントは、配列分割で取り込んだ画像フォントを表示させるようにしています。 つまり、画像が上に1px移動するごとに すでに表示している画像の上側の1px行ずつ消すようにしたいわけです。

Page: 1 |

Re: 文字送りがしたい ( No.1 )
名前:だんごさん 日時:2013/05/11 08:42

宣言 int SetDrawArea( int x1 , int y1 , int x2 , int y2 ) ; 概略 描画可能領域のセット 引数 x1 , y1 : 描画可能領域を示す矩形の左上の頂点 x2 , y2 : 描画可能領域を示す矩形の右下+1の頂点 戻り値  0:成功   −1:エラー発生 解説  ( x1, y1 )を左上頂点、( x2 - 1, y2 - 1 ) を右下頂点とした矩形 を各描画関数で描画可能な領域として設定します。この領域をはみ出て 描画しようとした場合はその部分は描画されません。 //リファレンスより これをうまく利用すればできるかもしれないです。。
Re: 文字送りがしたい ( No.2 )
名前:J 日時:2013/05/11 22:22

>>1 ありがとうございます。 確かに、その関数を使えば出来そうですね。 ところで、SetDrawArea関数を使用した場合、 SetDrawArea関数を呼び出した次の行から適応されると思うのですが、 SetDrawArea関数を解除させることは出来るのでしょうか? SetDrawArea関数を呼び出してメッセージウィンドウにメッセージを表示した後に、 その領域外に画像などを表示したい場合です。 SetDrawArea関数の状態のままだと、 フォント以外の画像もその領域内にしか表示されないように思えるのですが・・・
Re: 文字送りがしたい ( No.3 )
名前:だんごさん 日時:2013/05/11 23:18

>>SetDrawArea関数を呼び出してメッセージウィンドウにメッセージを表示した後に、 >>その領域外に画像などを表示したい場合です。 まずこれらを実証するにはSetDrawScreenで裏画面処理を行うようにしておくことが必要です。 流れとしては、 ClearDrawScreen();//画面消去 ↓ SetDrawArea( 0, 0, 100, 200);//描画の範囲指定 ↓ DrawString(0,0,"画面の一部を範囲に指定しているのでこの文章は途中で途切れるでしょう。", GetColor( 255, 255, 255 ));//文章 ↓ SetDrawArea( 0, 0, 640, 480);//画面全体を指定 ↓ DrawString(0,20,"画面全体を範囲に指定しているのでこの文章は全て表示されるはずです。(画面外は除いて)",GetColor( 255, 255, 255 ));//文章 ↓ ScreenFlip();//裏画面を表画面に SetDrawAreaで範囲指定をして何かを表示して、それが終わったら画面全体を描画範囲に指定して元に戻す、といった感じですね。
Re: 文字送りがしたい ( No.4 )
名前:J 日時:2013/05/12 00:16

>>3 なるほど、それなら出来そうですね。 つまり、whileループ処理でメッセージウィンドウに 文字を表示する手前で、SetDrawArea関数で領域を指定して そこにメッセージを表示させ、そのあとすぐに、 SetDrawArea関数で画面全体を指定してやれば、 whileループ処理内では、 メッセージを表示させる時だけSetDrawArea関数で領域を指定することが出来そうですね。 ありがとうございます。 まだ試していませんが、多分、解決したと思います。

Page: 1 |