トップページ > 過去ログ > 記事閲覧
SetDrawBlendModeに関して
名前:くりす 日時: 2008/06/14 07:00

お世話になっております。SetDrawBlendMode関数に関して、 問題が発生したので、書き込ませていただきます。 SetDrawBlendMode関数でALPHA合成を行ったときに正常に透過されず、 (恐らくメモリに読み込まれている)別の画像を透過させて表示してしまう、というものです。 使用している「test.bmp」は、いわゆるRPGツクール2000規格の、 「24×32ピクセルのキャラクターが3×4体並んでいる」という画像です。 なお、SetDrawBlendMode関数を使用しない場合は、正常に表示されるようです。

Page: 1 |

続き ( No.1 )
名前:くりす 日時:2008/06/14 07:02

#include "DxLib.h" #include <vector> using namespace std; struct unitst { int graph[4][4]; int houkou; int anime; }; vector<unitst> unit; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; if( DxLib_Init() == -1 ) { return -1 ; } SetDrawScreen( DX_SCREEN_BACK ) ; SetTransColor( 0 , 117 , 117 ) ; unitst temp; int graph = LoadGraph("test.bmp", TRUE); for (int a = 0; a < 4; a++) { for(int b = 0; b < 3; b++) { temp.graph[a][b] = DerivationGraph( b * 24, a * 32, 24, 32, graph ) ; } temp.graph[a][3] = temp.graph[a][1]; } temp.houkou = 0; temp.anime = 0; unit.push_back(temp); int count = 0; int i = 0; while(1) { if( ProcessMessage() == -1 ) { break ; } count ++; if (count % 10 == 0) unit[i].anime ++; if (unit[i].anime > 3) unit[i].anime = 0; if (count % 50 == 0) unit[i].houkou ++; if (unit[i].houkou > 3) unit[i].houkou = 0; DrawBox(0, 0, 640, 480, GetColor(0, 0, 0), TRUE); //(ここが問題です) SetDrawBlendMode( DX_BLENDMODE_ALPHA , 128 ) ; DrawGraph(20, 20, unit[i].graph[unit[i].houkou][unit[i].anime], TRUE); SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ; ScreenFlip(); } DxLib_End() ; return 0 ; } コメントアウトを外すと、問題が発生するようです。ご確認願えますでしょうか。 使用しているソフトは、VisualC++2005ExpressEditionです。

Page: 1 |