トップページ > 過去ログ > 記事閲覧
DrawGraph等のグラフィック描画関数について
名前:プログラム初心者 日時: 2009/07/19 00:28

はじめまして、 画像描画について質問です。 現在ライブラリをDLしてサンプルを動かしているいました。 画像描画関数 例えば DrawGraph --------------------------------------- DrawGraphの第四引数にTRUEを渡すとライブラリの説明かから抜粋すると TRUEにすると画像ファイルの限りなく黒に近い部分を 透過色とし、その部分は画面上に元から画像が残ります。 --------------------------------------- とかいてあるので黒い部分が抜けるのはわかります。 ならば任意の場所を抜きたい場合はアルファチャンネルの画像を用意して抜けばいいのだと思いついてきたサンプルを少しだけ改造して下のですがそこでしつもんがあります。 --------------------------------------- #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; int GHandle ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // BMP画像のメモリへの読みこみ GHandle = LoadGraph( "test6.bmp" ) ; // 画面左上に描画します(『DrawGraph』を使用) DrawGraph( 0 , 0 , GHandle , TRUE ) ; // 画面左上に描画します(『DrawGraph』を使用) DrawGraph( 300 , 0 , GHandle , FALSE ) ; // キーの入力待ち(『WaitKey』を使用) WaitKey() ; DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } --------------------------------------- 二個目のDrawGraphの引数をFALSEにした場合、アルファで抜く事出来ないのですが、アルファで抜く場合は、引数をTRUEにしなければいけないのでしょうか? でもTRUEにした場合は「限りなく黒に近い部分を 透過色とし」が生きてくるのでアルファの画像ある場合は良いですが、無いファイルは黒で抜けてしまうので何かうまい方法は無いのでしょうか? 引数にTRUEを渡して画像描画する画像に対のアルファ画像をすべて用意すれば問題ないと思うのですが、そればあまりにもあまりなので、何か良い案等々ありましたら、ご教授ください。

Page: 1 |

Re: DrawGraph等のグラフィック描画関数について ( No.1 )
名前:K_T 日時:2009/07/19 10:44

画像描画関数で透過表示する場合、pngファイルならば画像作成時に透過色設定をしておけば良いし、 bmpファイル、jpgファイル又はpngで透過色設定していない場合などは、アルファ画像を別ファイルで保存して、画像ファイルのファイル名に_aを付けて保存すれば大丈夫だったと思いますよ。 例 画像ファイル graph.jpg アルファファイル graph_a.jpg それと、黒以外の色を透過するならば、 SetTranceColor関数があります。(スペル違うかも・・・)
Re: DrawGraph等のグラフィック描画関数について ( No.2 )
名前:esar 日時:2009/07/19 14:29

私は透過設定がめんどくさいのでtgaファイルで使用しています。設定なしでアルファチャネルが透過しますよ。
Re: DrawGraph等のグラフィック描画関数について ( No.3 )
名前:プログラム初心者 日時:2009/07/20 10:12

ご返答ありがとうございました。 なるほど。アルファのあるファイルと無い画像ファイルを混在していたため、問題が発生したと思います。 混在させずに、画像のファイル形式も統一して、やろうと思います。 皆様、お返事ありがとうございました。

Page: 1 |