DrawGraph関数👉DrawGraph(300, 230, graphichandle, TRUE);の仕組みを考察してみよう

マックス「じゃあ


DrawGraph(300, 230, graphichandle, TRUE);



第4引数


TRUE


はなんのためにあるんだ?」


solarplexuss「それは



      愛=TRUE


のために


あるんだ」


マックス「意味が分からん!」



ソーラー「DrawGraph関数の第4引数は


TRUE(もしくは1)

FALSE(もしくは0)


のどちらかの値をとることができます


第4引数が


TRUEに設定されていると


グラフィックハンドルが割り当てられた画像がゲーム画面に表示されたとき


グラフィックハンドルが割り当てられた画像に用いられた黒い色の部分


が透明になって下の絵が透けて見えるようになります



FALSEに設定されていると


グラフィックハンドルが割り当てられた画像がゲーム画面に表示されたとき


グラフィックハンドルが割り当てられた画像に用いられた黒い色の部分


は透明にならず 黒い部分の下の絵が透けて見えるようにはなりません」



solarplexuss「ええんん なんのはなし~よくわかんな~い」


ソーラー「それでは



DrawGraph関数の第4引数が


TRUE(もしくは1)

FALSE(もしくは0)


となっている場合では


どのような違いが出てくるのかを観察してみましょう


まずは


DrawBox(100, 100, 500, 300, GetColor(255,0,0), TRUE);


を実行して


赤い四角形の領域を作成します」


マックス「なつかしいのう


DrawBox関数か」


ソーラー「


その


赤い四角形の領域のうえに


DrawGraph(300, 230, graphichandle, TRUE);


を実行して


飛行機を表示してみましょう


そうすれば


DrawGraph関数の第4引数が


TRUE(もしくは1)

FALSE(もしくは0)


の場合の違いがよくわかるんだ~」



飛行機の画像データはこちらのサイトの画像を利用しています

👇

https://solalion.blogspot.com/2021/07/blog-post_37.html



まずは


DrawGraph関数の第4引数が


TRUE(もしくは1)


の場合の


DrawGraph(300, 230, graphichandle, TRUE);


を実行してみましょう


そのプログラムはこちらです


👇



#include "DxLib.h"


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{



ChangeWindowMode(TRUE); // ウインドウモードに設定します


if (DxLib_Init() == -1) // DXライブラリを初期化処理しています

{

return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します

}



DrawBox(100, 100, 500, 300, GetColor(255,0,0), TRUE);//👈DrawBox関数を実行しています


int graphichandle;


graphichandle = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");


DrawGraph(300, 230, graphichandle, TRUE);//👈ここです🌞DrawGraph関数を実行しています


WaitKey(); //🌞 キーの入力を待っています 何かキーが入力がされるまで これ以上プログラムは実行されません


DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます


return 0; // プログラムを終了します

}



プログラムの実行結果


https://solalion.blogspot.com/2021/07/blog-post_71.html



マックス「ぐわわ 赤い・・・


しかも


飛行機の画像が表示されとらん


なぜだあ!」


solarplexuss「もうん


ゲーム画面(コマンドプロンプト画面)に


DrawGraph関数

👇

DrawGraph(300, 230, graphichandle, TRUE);


をもちいて


画像を表示するには


2段階の過程が必要なんでしょう


まだ1段階しか終了してないよ


今のプログラムを実行すると


exeファイルが作製されたんでしょう



🍓表示されている赤い画面を消して


プログラムを終了🍓して


これで


第1段階の終了



あとは


その


exeファイル



コンピュータのハードディスクから探し出して


クリックしないと


ゲーム画面に飛行機の画像を表示することはできなかったよね


クリックして


第2段階の終了」



マックス「あヽ(^o^)丿ヽ(^o^)丿そうだった


なはは


2段階、2段階



では


作製された


exeファイル



コンピュータのハードディスクから探し出して


クリック クリッ~ク」


exeファイル



クリックしてプログラムを実行すると


以下のように


飛行機がゲーム画面に表示されます

👇


https://solalion.blogspot.com/2021/07/blog-post_54.html


マックス「赤いな・・・


画面が燃えているな」


solarplexuss「飛行機が普通に表示されているね」


ソーラー「


次は


DrawGraph関数の第4引数が


FALSE(もしくは0)


の場合の


DrawGraph(300, 230, graphichandle, FALSE);


を実行してみましょう

👇

#include "DxLib.h"


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{



ChangeWindowMode(TRUE); // ウインドウモードに設定します


if (DxLib_Init() == -1) // DXライブラリを初期化処理しています

{

return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します

}



DrawBox(100, 100, 500, 300, GetColor(255,0,0), TRUE);


int graphichandle;


graphichandle = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");


DrawGraph(300, 230, graphichandle, FALSE);//👈ここです🌞DrawGraph関数を実行しています


WaitKey(); //🌞 キーの入力を待っています 何かキーが入力がされるまで これ以上プログラムは実行されません


DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます


return 0; // プログラムを終了します

}



プログラムの実行結果


https://solalion.blogspot.com/2021/07/blog-post_61.html


マックス「


まんま


ソーラーが描いた飛行機.bmpファイルに保存されていた


画像データが黒い部分を含めて


そのまんま


赤い画面に表示されている


なんだ?



確かに


ソーラーが描いた飛行機.bmpファイルに保存されていた


画像データ



以下の図のように

👇

https://solalion.blogspot.com/2021/07/blog-post_90.html


黒い四角い画面領域の中に


飛行機が描かれていたが


なんで


黒い四角い画面領域ごと


飛行機が表示されているんだ?」


ソーラー「それは


そもそも


DrawGraph関数は


グラフィックハンドルが割り振られた画像



ゲーム画面に表示する働きがあるからなんです


グラフィックハンドルが割り振られた画像



四角形の領域に描かれているので


四角形の画像だね


だから


DrawGraph関数


を実行すると


その四角形の画像が


ゲーム画面に表示されることになります


たとえ


四角形の画像の中に


黒い色が用いられている領域があったとしても


その黒い色が用いられている領域も


もちろん


ゲーム画面に


表示されることになります


DrawGraph関数

👇

DrawGraph(300, 230, graphichandle, TRUE);


のように


第4引数がTRUEになっていると


画像データの


黒い領域の部分



透明な扱いになるんです


だからこそ


DrawGraph(300, 230, graphichandle, TRUE);


が実行されると


さっきの画面のように


黒い色で塗られた画面は表示されないんだね」


その様子はこちらです

👇

https://solalion.blogspot.com/2021/07/blog-post_54.html






  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る