ページ 11

背景の透明化

Posted: 2010年7月17日(土) 15:26
by atpiza
お世話になっております。
このタイトルだと少し語弊があるとおもうので説明します。
プログラムで画像とかを背景を透明化表示して実行すると、
背景の透明化されたところは真っ黒(自分の場合は)ですよね。
それをなくして 画像の部分だけを純粋に切り取りたいのです(上の画像のように)・・。

解決策ありましたらよろしくお願いします。

Re:背景の透明化

Posted: 2010年7月17日(土) 15:40
by 組木紙織
解決策はあると思いますが、質問内容が不十分です。

環境の提示、サンプルコードの提示、より詳細な質問内容に説明をお願いします。

Re:背景の透明化

Posted: 2010年7月17日(土) 20:13
by atpiza
visualC++2010 で DXライブラリを使わせていただいております。
うまく説明するのが難しいのですが、

-----------------------------------------------------------------------------------

#include "DxLib.h"


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){

SetGraphMode( 128, 137, 32);

ChangeWindowMode(TRUE); //ウィンドウモードに変更する為の関数

SetWindowStyleMode(4) //ウィンドウ枠消す

// ウインドウの初期位置を設定する
;SetWindowInitPosition( 1150, 853);

;if( DxLib_Init() == -1) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
SetWindowPos( GetMainWindowHandle(), HWND_TOPMOST, 1150, 853, 223, 45, SWP_NOSIZE | SWP_NOMOVE);
LoadGraphScreen( 0, 0, "maru.png" , TRUE ) ; //画像を描写
ScreenFlip(); //裏画面に描画されている物を表に反映
}

DxLib_End(); //DXlib終了
return 0;

}


----------------------------------------------------------------------

こんなかんじで>>1の画像の上半分の状態になりました。

そうすると 画像の後ろが真っ黒になってしまいます。
それを消して(透明にして)本当に画像の部分「だけ」を表示させたいのですが・・・。 画像

Re:背景の透明化

Posted: 2010年7月17日(土) 20:56
by 組木紙織
多分ここと同じことをやりたいのかな。
http://www.kumei.ne.jp/c_lang/sdk2/sdk_125.htm

先ほどDXライブラリのリファレンス見たとこ、そのような操作を出来るものが見つけられなかったので、
多分DXライブラリでは出来ないと思います。
(もし出来るなら詳しい方説明お願いします。)

Win32APIを使ってする方法(上のリンクと同じ方法)ならあるんですが、
問題点が二つあります。
1:DXライブラリと併用して問題ないかどうか。
2:Win32APIの使い方を理解して置くべき。

使うに当たっての問題点はその二つですが、
実際にゲームを作るためにすると特殊なウインドウなので、通常のウインドウの操作
(最小化、移動、終了処理、etc)を全部自分で書いてあげないといけないのでちょっと面倒です。

Re:背景の透明化

Posted: 2010年7月17日(土) 21:14
by シエル
この質問って、単に黒い部分を透過させたいってだけの質問じゃないんですか?

Re:背景の透明化

Posted: 2010年7月17日(土) 21:23
by atpiza
わかりました。

Win32APIのほうが確実そうですね。
現時点の自分ではできそうにないのでもっと勉強しようと思います。


ご解答本当にありがとうございました。

Re:背景の透明化

Posted: 2010年7月17日(土) 21:24
by atpiza
一応不可能ではないことがわかったのでこれで解決とさせていただきます。