トップページ > 記事閲覧
マスク用画像の角度を指定する方法を教えてください
名前:鈴狼 日時: 2021/04/17 06:19

こんばんは、いつもお世話になっております。 ゲーム作りに行き詰ってしまい、問題解決の為に質問させてください。 マスク用の画像の角度を指定・回転させてマスクデータとして使いたいのですが、そのような方法はありますか? 具体的には、一枚絵のレーザーを命中した箇所から非表示にする為に、角度を指定したマスクデータを使いたいのです。 ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=3591 こちらを参考にして、DrawRotaGraph3で角度を指定して試してみましたがうまくいきませんでした。 特定の角度(0度や90度の倍数)のみ有効で、それ以外の角度だと回転ではなく拡大してしまいました。 こちらの方法で角度を指定することは不可能なのでしょうか。 教えて頂けると幸いです、よろしくお願い致します。
メンテ

Page: 1 |

Re: マスク用画像の角度を指定する方法を教えてください ( No.1 )
名前:管理人 日時:2021/04/18 01:35

載せて頂いたスレッドの DrawExtendGraph を DrawRotaGraph3 に変更してみましたが、 正常にマスクデータとして使用できました #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int GraphHandle ; int ScreenHandle ; int angle ; // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 画像を読み込み GraphHandle = LoadGraph( "Test1.bmp" ) ; // マスクスクリーンに使うアルファチャンネル付きの描画対象にできるグラフィックハンドルを作成 ScreenHandle = MakeScreen( 640, 480, TRUE ) ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // マスク機能の初期化を行う CreateMaskScreen() ; // マスクスクリーンに使用するグラフィックハンドルとして MakeScreen で作成したグラフィックハンドルをセット SetMaskScreenGraph( ScreenHandle ) ; // 画像の移動処理用の変数を初期化 angle = 0 ; // メインループ while( ProcessMessage() == 0 ) { // 画像の移動処理 angle ++ ; if( angle > 360 ) { angle -= 360 ; } // 描画先をマスク用の画像に変更 SetDrawScreen( ScreenHandle ) ; // マスク用の画像をクリア ClearDrawScreen() ; // 画像を回転して描画 DrawRotaGraph3( 320, 240, 60, 240, 1.0, 1.0, angle * DX_PI / 180.0f, GraphHandle, TRUE ) ; // 描画先を裏画面に変更 SetDrawScreen( DX_SCREEN_BACK ) ; // 裏画面をクリア ClearDrawScreen() ; // マスクを有効にする SetUseMaskScreenFlag( TRUE ) ; // 画面いっぱいに黄色い四角形を描画 DrawBox( 0, 0, 640, 480, GetColor( 255,255,0 ), TRUE ) ; // マスクを無効にする SetUseMaskScreenFlag( FALSE ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } 上記プログラムであれば鈴狼さんの環境でも正常に動作するか よろしければ試してみてください m(_ _)m
メンテ
Re: マスク用画像の角度を指定する方法を教えてください ( No.2 )
名前:鈴狼 日時:2021/04/21 00:46

お返事、ありがとうございます。 提示して頂いたプログラムを試してみたところ、正常に動作しました。 この結果から察するに、自家製のプログラムの方に問題があるようです。 これから問題箇所を特定して修正したいと思います。 正解があると分かったので、安心して直すことができます。 教えて頂きまして、ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存