背景の透明化

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

背景の透明化

#1

投稿記事 by atpiza » 15年前

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

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

組木紙織

Re:背景の透明化

#2

投稿記事 by 組木紙織 » 15年前

解決策はあると思いますが、質問内容が不十分です。

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

atpiza

Re:背景の透明化

#3

投稿記事 by atpiza » 15年前

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:背景の透明化

#4

投稿記事 by 組木紙織 » 15年前

多分ここと同じことをやりたいのかな。
http://www.kumei.ne.jp/c_lang/sdk2/sdk_125.htm

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

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

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

シエル

Re:背景の透明化

#5

投稿記事 by シエル » 15年前

この質問って、単に黒い部分を透過させたいってだけの質問じゃないんですか?

atpiza

Re:背景の透明化

#6

投稿記事 by atpiza » 15年前

わかりました。

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


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

atpiza

Re:背景の透明化

#7

投稿記事 by atpiza » 15年前

一応不可能ではないことがわかったのでこれで解決とさせていただきます。

閉鎖

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