Re: DX_GRAPH_FILTER_REPLACEMENTがdotNetで使用できません ( No.1 ) |
- 名前:管理人 日時:2022/01/13 01:42
|
Re: DX_GRAPH_FILTER_REPLACEMENTがdotNetで使用できません ( No.2 ) |
- 名前:774 日時:2022/01/14 08:25
動作確認出来ました。
ありがとうございます。
ただグリーンバックの動画でテストしたのですが、グリーンバックを別の色に置き換えることは出来ましたが、
アルファ値を0にしても別の色がそのまま描画されるようです。
置き換え色All0指定で黒バックの描画がされました。
描画順序の変更で個人的には透過出来なくても問題はなくなったのですが、一応ご報告まで。
ソース抜粋
DX.GraphFilterBlt(basegh, testgh, DX.DX_GRAPH_FILTER_REPLACEMENT, 0, 255, 0, 255, 0, 0, 0, 0);
DX.DrawRectModiGraphF(p1.X, p1.Y, p2.X, p2.Y, p3.X, p3.Y, p4.X, p4.Y, Xy2.X, Xy2.Y, Wh.Width, Wh.Height, testgh, DX.TRUE);
|
Re: DX_GRAPH_FILTER_REPLACEMENTがdotNetで使用できません ( No.3 ) |
- 名前:管理人 日時:2022/01/15 18:26
以下のようなプログラムで私も試してみましたが、緑の部分を透明ドットに
置き換えて描画した所、問題なく透過されました
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// ウィンドウモードで起動
ChangeWindowMode( TRUE );
// 画面モードの設定
SetGraphMode( 640, 480, 32 ) ;
if( DxLib_Init() < 0 ) return -1;
// 320x240 の緑の動画を読み込み
int Movie = LoadGraph( "GreenAVI.avi" );
// 動画の再生
PlayMovieToGraph( Movie, DX_PLAYTYPE_LOOP );
// 320x240 のアルファチャンネル付き画像を作成
int Screen = MakeScreen( 320 , 240 , TRUE );
// 描画先を裏画面に変更
SetDrawScreen( DX_SCREEN_BACK ) ;
// メインループ
while( ProcessMessage() == 0 )
{
// 緑の動画の緑部分を透明ドットに置き換え
GraphFilterBlt( Movie, Screen, DX_GRAPH_FILTER_REPLACEMENT,
0, 255, 0, 255,
0, 0, 0, 0
);
// 透明になっているか判断するため、画面全体を青で塗りつぶし
DrawBox( 0, 0, 640, 480, GetColor( 0, 0, 255 ), TRUE );
// 緑の部分を透明ドットに置き換えた画像を画面に描画
DrawGraph( 0, 0, Screen, TRUE );
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
DxLib_End();
return 0;
}
GraphFilterBlt の転送先の画像 testgh にアルファチャンネルが無い、ということは
無かったでしょうか?
|
Re: DX_GRAPH_FILTER_REPLACEMENTがdotNetで使用できません ( No.4 ) |
- 名前:774(解決) 日時:2022/02/17 08:32
スクリーン作成時にαチャンネルが無かっただけでした。
ありがとうございました
|
|