DXライブラリの画像の扱いについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ルート

DXライブラリの画像の扱いについて

#1

投稿記事 by ルート » 7年前

また、質問させていだ抱きます。
今回は画像の扱いについてなのですが、

・画面の切り替えについて
画面の切り替えの際、ClearDrawScreen()で画面をいったんきれいにし、そこに新しく、画像を描画していけばよいのでしょうか?(違う場合、修正および、サンプルコードをお願いします。 また、違う方法があれば、そちらも教えてもらえるとありがたいです。

・画像のランダム方法について
画像のランダム表示の方法があれば、サンプルコードをお願いします。

・画像と入力値のリンク(?)について
画像がないので文で説明します。
画像にオレンジの絵が何個か、書いてあったとして、それをパソコンで数値を入力して、合否を当てる
というものなのですが、可能でしょうか?
可能ならばヒントまたはサンプルコードを載せてもらえるとありがたいです。

開発環境はVS  C++2010
使用言語     C言語
使用ライブラリ   DXライブラリ

わかるかたお願いします。

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 9年前
住所: 大阪府
連絡を取る:

Re: DXライブラリの画像の扱いについて

#2

投稿記事 by Hiragi(GKUTH) » 7年前

>・画面の切り替えについて
>画面の切り替えの際、ClearDrawScreen()で画面をいったんきれいにし、そこに新しく、画像を描画していけばよいのでしょうか?
>(違う場合、修正および、サンプルコードをお願いします。また、違う方法があれば、そちらも教えてもらえるとありがたいです。

SetDrawScreen関数で裏画面にする ⇒ 裏画面(表示されない領域)で画像などの表示プログラムを実行 ⇒ ScreenFlip関数で表示
ClearDrawScreen関数で画面を消す、 ⇒ 裏画面(表示されない領域)で画像などの表示プログラムを実行・・・
と、こんな感じで描画されます。

>・画像のランダム方法について
>画像のランダム表示の方法があれば、サンプルコードをお願いします。

これはここのフォーラムルールに反しているように思えるので回答できません。
ただ適当に乱数などを使って、表示するだけでいいと思われますが・・・

>・画像と入力値のリンク(?)について
>画像がないので文で説明します。
>画像にオレンジの絵が何個か、書いてあったとして、それをパソコンで数値を入力して、合否を当てる
>というものなのですが、可能でしょうか?
>可能ならばヒントまたはサンプルコードを載せてもらえるとありがたいです。

画像ごとに数値を割り振って、それを使い条件分岐で判断すれば可能です、
だいがくせい!

ルート

Re: DXライブラリの画像の扱いについて

#3

投稿記事 by ルート » 7年前

画像のランダム表示の件について・・・
ランダム関数は、数字でなら使ったことは、あるのですが、画像には、数字というものを持っていませんし、
画像にどうやって、数値を割り振るか、ということで、悩んでいるのですが、質問の内容不足ですいません。

beatle
記事: 1280
登録日時: 7年前
住所: 埼玉
連絡を取る:

Re: DXライブラリの画像の扱いについて

#4

投稿記事 by beatle » 7年前

画像に数字を割り当てるのも、文字に数字を割り当てるのも同じ事です。
文字に数字を割り当てるのなら見たことありますよね?そう。'a'とやるとaという文字に割り当てられている数字を得られますね。
こんな感じで、「hoge.pngには0を、foo.pngには1を」みたいにすればいいでしょう。

ルート

Re: DXライブラリの画像の扱いについて

#5

投稿記事 by ルート » 7年前

文字だとchar型を使ってaとかを格納したのはわかるのですが、
aの中に元々、数値が割り振られているということですよね・・・?

charとかを使うわけではないんですよね?
理解力が低くてすいませんが、もう少しわかりやすくお願いできないでしょうか?

beatle
記事: 1280
登録日時: 7年前
住所: 埼玉
連絡を取る:

Re: DXライブラリの画像の扱いについて

#6

投稿記事 by beatle » 7年前

ルートさんの頭の中で「hoge.pngは0、foo.pngは1」という対応関係を作っておきます。
ユーザーが0を入力したらhoge.pngを選んだことにして、ユーザーが1を入力したらfoo.pngを選んだことにすればいいと思います。

もしかしたら、プログラム的に
int GetImageId(const char* image_name);
const char* GetImageName(int image_id);
みたいな関数を作りたいということでしょうか。

ルート

Re: DXライブラリの画像の扱いについて

#7

投稿記事 by ルート » 7年前

ユーザが入力した数値なら、画像を表示するというより、

画像に数値を割り振って(できれば)
ランダム関数を使って指定した範囲内数値で、画像に割り振った数値が出たら、その数値の画像を表示する
という風にしたいのですが。

アバター
Dixq (管理人)
管理人
記事: 1659
登録日時: 9年前
住所: 北海道札幌市
連絡を取る:

Re: DXライブラリの画像の扱いについて

#8

投稿記事 by Dixq (管理人) » 7年前

まず一つ目。
数値を文字列に変換したいということであれば、
いくつか方法がありますが、sprintfを使うと良いでしょう。
http://www.google.co.jp/search?gcx=c&so ... +C&qscrl=1

例えば
sample0.png
sample1.png
sample2.png
sample3.png
のような連番のファイルを用意しておきます。
int i=0;
char FileName[128];
sprintf(Filename,"sample%d.png",i);
としてやればFileNameは"sample0.png"になります。
これをLoadGraphに渡してやればよいです。
連番であれば、for文で回せますから

コード:

for( int i=0; i<5; i++ ){
    sprintf(FilaName,"sample%d.png",i);
    hoge = LoadGraph( FileName );
}
と言った事も可能になります。

二つ目。
ランダムでこの数値を作りたければGetrand関数を使って適当な数値を生成すればよいでしょう。
但しリアルタイムに画像の表示を切り替えるなら、まず全ての画像を読み込んでおいて、画像ハンドルを使って表示する事になります。

その時は、

int GrHandle[5];

とでも配列を作っておいて、画像を全てこの中にロードしておき、GetRand(4)で帰ってくる0~4の値を配列要素数にあてはめて使用すると良いかと思います。

三つ目。
入力した文字列+ファイル名にしたいのなら、これもsprintfで連結すればよいです。
sprintfはprintfのように書式指定子が使えますので引数に「"%s%s","orange",".png"」のようにかけばorange.pngという文字列が出来上がります。

ルート

Re: DXライブラリの画像の扱いについて

#9

投稿記事 by ルート » 7年前

みなさんありがとうございます。

ついでなのですが、画像の切り替えとは、また別のことなのですが
画像のスライドみたいなのはできますか?
例えば、画像を同じ座標に表示してクリックするとそこだけ、変わるイメージなんですが、
わからなかったらすいません。

hss12
記事: 40
登録日時: 8年前

Re: DXライブラリの画像の扱いについて

#10

投稿記事 by hss12 » 7年前

マウスを使ってということですか?
このあたりを見てもらうとして
http://dixq.net/g/04_07.html
マウスの座標が範囲に入っていて、かつ、クリックされたら
画像を表示でどうでしょうか。
いろいろ書き方はありそうですが、if文でどちらの画像を表示させるか決めれば良いかと。

とりあえず、書いてみてコードをアップしてください。
問題があればアドバイスしますので。

閉鎖

“C言語何でも質問掲示板” へ戻る