トップページ > 記事閲覧
マスク有効時のDrawRectGraph
名前:chain 日時: 2014/12/01 03:50

別の場所にて、この掲示板で確認した方がよいとご指摘を受け、こちらの方で質問させていただきます。 DxLibのマスク処理を行った後にDrawRectGraphで描画を行った際に描画できません。DrawBoxなどほかの関数ではできるのですが。他の方もDrawRectGraphではできなかったとのことで、なにか制約などあるのでしょうか。DxLibのバージョンですが、Ver 3.13を使用しております。以下に自分の描いたコードを載せてみます。よろしくおねがいします。 #include "DxLib/DxLib.h" #include <math.h> int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow ) { ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定 DxLib_Init(); int win_Wid, win_Hei, win_Cb; GetScreenState( &win_Wid, &win_Hei, &win_Cb ); CreateMaskScreen(); int img_Wid = 32; int img_Hei = 32; int* GHandle = new int[224]; LoadDivGraph( _T("sozai/map1.png") , 224 , 8 , 28 , img_Wid , img_Hei , GHandle ) ; int MaskHandle = MakeMask(win_Wid, win_Hei); int draw_X = 0; int draw_Y = 50; unsigned char mLight[480][640]; //SetUseMaskScreenFlag( FALSE ); while(ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){ for(int x = 0; x<win_Wid; x++){ for(int y = 0; y<win_Hei; y++){ mLight[y][x] = 0xff; } } double harfD = 2*32; for(int i = (int)(win_Wid / 2 + draw_X - harfD); i<=win_Wid / 2 + draw_X + harfD; i++){ int r = (int)floor(sqrt(pow(harfD, 2) - pow((double)(win_Wid / 2 + draw_X - i), 2))); for(int j = (int)(win_Hei / 2 + draw_Y - r) ; j<= win_Hei / 2 + draw_Y + r; j++){ if(i < win_Wid && i >= 0 && i < win_Hei && i >= 0){ mLight[j][i] = 0; } } } SetDataToMask( win_Wid, win_Hei, mLight, MaskHandle); DrawMask( 0, 0, MaskHandle, DX_MASKTRANS_BLACK); for(int map_Y = 0; map_Y * img_Hei < win_Hei; map_Y++){ for(int map_X = 0; map_X * img_Wid < win_Wid; map_X++){ //DrawBox(0, 0, win_Wid, win_Hei, GetColor(255, 0, 0), TRUE ); DrawRectGraph( map_X * img_Wid + draw_X, map_Y * img_Hei + draw_Y, 0, 0, 32, 32, GHandle[76], TRUE, FALSE ) ; } } } DxLib_End(); return 0; }
メンテ

Page: 1 |

Re: マスク有効時のDrawRectGraph ( No.1 )
名前:管理人 日時:2014/12/02 01:41

載せて頂いたコードで現象を確認できました すみません、マスク処理を有効にした場合に DrawRectGraph が正常に動作しないバグがありました 修正版をアップしましたので、よろしければお使いください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: マスク有効時のDrawRectGraph ( No.2 )
名前:chain 日時:2014/12/02 14:15

対応ありがとうございます。 無事動作を確認しました。
メンテ

Page: 1 |

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

   クッキー保存