お世話になっております。
このタイトルだと少し語弊があるとおもうので説明します。
プログラムで画像とかを背景を透明化表示して実行すると、
背景の透明化されたところは真っ黒(自分の場合は)ですよね。
それをなくして 画像の部分だけを純粋に切り取りたいのです(上の画像のように)・・。
解決策ありましたらよろしくお願いします。
背景の透明化
Re:背景の透明化
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の画像の上半分の状態になりました。
そうすると 画像の後ろが真っ黒になってしまいます。
それを消して(透明にして)本当に画像の部分「だけ」を表示させたいのですが・・・。
うまく説明するのが難しいのですが、
-----------------------------------------------------------------------------------
#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:背景の透明化
多分ここと同じことをやりたいのかな。
http://www.kumei.ne.jp/c_lang/sdk2/sdk_125.htm
先ほどDXライブラリのリファレンス見たとこ、そのような操作を出来るものが見つけられなかったので、
多分DXライブラリでは出来ないと思います。
(もし出来るなら詳しい方説明お願いします。)
Win32APIを使ってする方法(上のリンクと同じ方法)ならあるんですが、
問題点が二つあります。
1:DXライブラリと併用して問題ないかどうか。
2:Win32APIの使い方を理解して置くべき。
使うに当たっての問題点はその二つですが、
実際にゲームを作るためにすると特殊なウインドウなので、通常のウインドウの操作
(最小化、移動、終了処理、etc)を全部自分で書いてあげないといけないのでちょっと面倒です。
http://www.kumei.ne.jp/c_lang/sdk2/sdk_125.htm
先ほどDXライブラリのリファレンス見たとこ、そのような操作を出来るものが見つけられなかったので、
多分DXライブラリでは出来ないと思います。
(もし出来るなら詳しい方説明お願いします。)
Win32APIを使ってする方法(上のリンクと同じ方法)ならあるんですが、
問題点が二つあります。
1:DXライブラリと併用して問題ないかどうか。
2:Win32APIの使い方を理解して置くべき。
使うに当たっての問題点はその二つですが、
実際にゲームを作るためにすると特殊なウインドウなので、通常のウインドウの操作
(最小化、移動、終了処理、etc)を全部自分で書いてあげないといけないのでちょっと面倒です。