トップページ > 過去ログ > 記事閲覧
DX_MASKTRANS_WHITEの動作につきまして
名前:UG 日時: 2012/07/20 22:46

初めまして、UGと申します。 いつも楽しく使わせて頂いてます。 白と黒で構成されたマスク用画像を使用し、 DrawMask関数の第4引数にDX_MASKTRANS_BLACKを指定した場合、黒の部分が透過されますが DX_MASKTRANS_WHITEを使用した場合、マスクが機能していないように思われます。 単純に自分の使い方が間違っているのか、環境もしくは不具合によるものなのか 判断できませんでしたので、ご教授よろしくお願いします。 環境 OS : XP Professional SP3 バージョン : VC用 3.08a 以下のコードで発生を確認しています。 ---------------------------------------- #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { int maskHandle; if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; maskHandle = LoadMask( "mask.bmp" ); CreateMaskScreen(); DrawMask( 0 , 0 , maskHandle , DX_MASKTRANS_WHITE ); // <- DX_MASKTRANS_BLACKの際は正常に動作 DrawBox( 0 , 0 , 640 , 480 , GetColor( 255 , 0 , 0 ) , TRUE ) DeleteMaskScreen(); WaitKey(); DxLib_End(); return 0; } ----------------------------------------

Page: 1 |

Re: DX_MASKTRANS_WHITEの動作につきまして ( No.1 )
名前:管理人 日時:2012/07/22 01:02

DX_MASKTRANS_BLACK を DX_MASKTRANS_WHITE に変更すると DrawBox の描画に マスクの影響が全く無くなるのは正常な動作です マスク画面は初期状態では黒で塗りつぶされていて、マスク画面の黒の部分は 通常の描画に影響を与えません そして、DrawMask の引数 TransMode は、描画するマスクデータの 「何色の部分をマスク画面に書き込まないか」を指定する引数です この引数を DX_MASKTRANS_WHITE にすると、マスクデータの白の部分が マスク画面に書き込まれないということになります CreateMaskScreen をした直後はマスク画面は黒で塗りつぶされていて、 且つ DrawMask で描画するマスクデータの白の部分を書き込まないということは 黒で塗りつぶされているマスク画面にマスクデータの黒の要素だけを書き込む ということになるので、結果としてマスク画面には何の変化も無いことになります CreateMaskScreen の直後はマスク画面が何色で塗りつぶされているかを記述して いませんでしたので、CreateMaskScreen の解説に追加しました http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_graph.html#R16N1
Re: DX_MASKTRANS_WHITEの動作につきまして ( No.2 )
名前:UG(解決) 日時:2012/07/23 01:04

管理人様、ご回答ありがとうございます。 思い込みで、マスク画面は初期状態は何もない状態(透明)で マスクデータを元に作られていると勘違いしており、 動作についての理解が足りませんでした。 初歩的な質問でお手数をお掛けしまい、大変失礼しました。

Page: 1 |