ページ 1 / 1
無題
Posted: 2009年10月26日(月) 14:50
by YS
ただいま項目を選択して画像を表示するプログラムを作っております。
そこでいまつまずいているところが、選択した項目の画像を表示させたままのこして
複数画像を表示するということをしたいのですが形は頭で想像できてもプログラムが
どうかけばいいのかは頭にうかんでこないのです。。
Re:無題
Posted: 2009年10月26日(月) 14:55
by s-rush
まず、YSさんの開発環境が明記されていないので、回答のしようがないです。
言語はなんですか?
外部ライブラリは使用していますか?
OSはなんですか?
最低限、これくらいは書いてほしいです><
Re:無題
Posted: 2009年10月27日(火) 11:03
by YS
もうしわけございません。。。
OSは XP VISTA
ライブラリは DX
言語は C これでしょうか
Re:無題
Posted: 2009年10月27日(火) 11:23
by Mist
画像ごとに表示するかしないかのフラグを用意する。
選択されたらフラグを立てる。
フラグが立っている画像は全て表示する。
でいいと思いますが。
一度表示したものを画面に残しておこう、という考えはDXライブラリには向きません。
bool ViewFlg[画像の枚数] = { false };
while (省略) {
if (選択された) {
ViewFlg[x] = true;
}
for (省略) {
if (ViewFlg[x] == true) {
DrawGraph(省略);
}
}
ScreenFlip();
}
Re:無題
Posted: 2009年10月29日(木) 09:51
by YS
そうですか。。。ありがとうございました。
もうひとつ、選択した項目の画像を画面に表示したままにしたいのですが、if(Key[KEY_INPUT_Z]のなかに
条件を入れると押してるときには出るのですがキーをはなすと消えてしまうのですがどうしてでしょうか。
Re:無題
Posted: 2009年10月29日(木) 10:24
by conio
-----------------------
if(Key[KEY_INPUT_Z]){ //'Z'が押されているなら
画像を表示
}
-----------------------
Zを押したときにif文の中を実行するようになっているので、
Zが押されていなければ、if文の中は実行されなくなり、画像を表示する処理は行われません。
なので、画像は消えます。
↓あと、こういう流れで描画しているという事はわかりますよね?
--------------------------------------------
裏画面のデータを削除
画像A表示
画像B表示
画像C表示
裏画面データを表画面へ反映
裏画面のデータを削除
画像A表示
画像B表示
画像C表示
裏画面データを表画面へ反映
裏画面のデータを削除
画像A表示
画像B表示
画像C表示
裏画面データを表画面へ反映
:
(以下繰り返し)
--------------------------------------------
描画した画像は毎回クリアされて、また画像を初めから順に描画してます。
よって描画処理を止めれば、全てクリアされた状態でウィンドウに表示されます。
「一度描画処理をすれば、しばらく残り続ける」という様なイメージがあるのかもしれませんが、それは違います。
毎回消されて、また表示、という事の繰り返しなので、描画処理を止めた瞬間 画像は消えます。
Re:無題
Posted: 2009年10月29日(木) 20:28
by YS
えと描画処理をしなければいいということでしょうか?
もしくはどのようにすればいいのでしょうか。。。。
Re:無題
Posted: 2009年10月29日(木) 20:45
by conio
>>えと描画処理をしなければいいということでしょうか?
>>もしくはどのようにすればいいのでしょうか。。。。
前回のコメントは「画像が消える理由は何ですか?」という質問に対して
理由を説明しただけのものです。
「画像をずっと表示させたい」という要望については、画像を表示させる処理を毎回行えば良いと思います。
↓この条件文(if文)を消せば画像はずっと表示されると思います。
-----------------------
if(Key[KEY_INPUT_Z]){
画像を表示
}
-----------------------
また、「Zを押した後ずっと表示させたい」というのであれば、
フラグか何かを用意してやればいいと思います。
-----------------------
if(Key[KEY_INPUT_Z]){
flag = true;
}
if(flag){
画像を表示
}
-----------------------
Re:無題
Posted: 2009年11月02日(月) 11:20
by YS
ありがとうございました
ためになりました。