いつもお世話になっております。
FillSoftImageを使用してみたのですが、Redとαチャンネルの情報が
SoftImageに対して正しく反映されていないように見受けられました。
お忙しいとは思いますが、修正をお願いします。
もし、使用法や解釈に誤りがございましたらご指摘下さい。
ライブラリは3.02を使用しております。
ご確認のほど、よろしくお願いします。
//-- テストソース (Tex1.bmpを使用) --//
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( TRUE );
if ( DxLib_Init( ) == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK );
int ColStr = GetColor( 255, 255, 255 );
int ColBack = GetColor( 32, 32, 32 );
int ImgFile = LoadSoftImage( "tex1.bmp" ); // 透過情報の存在するファイルを読み込むと、ARGBと同じ結果になる
int ImgARGB = MakeARGB8ColorSoftImage( 64, 64 );
int ImgXRGB = MakeXRGB8ColorSoftImage( 64, 64 );
FillSoftImage( ImgFile, 255, 255, 255, 128 ); // 白、半透明
FillSoftImage( ImgARGB, 255, 255, 255, 128 );
FillSoftImage( ImgXRGB, 255, 255, 255, 128 );
DrawLineSoftImage( ImgFile, 0, 0, 64, 64, 255, 255, 255, 64 ); // DrawLineは問題ない模様
DrawLineSoftImage( ImgARGB, 0, 0, 64, 64, 255, 255, 255, 64 );
DrawLineSoftImage( ImgXRGB, 0, 0, 64, 64, 255, 255, 255, 64 );
int ghFile = CreateGraphFromSoftImage( ImgFile );
int ghARGB = CreateGraphFromSoftImage( ImgARGB );
int ghXRGB = CreateGraphFromSoftImage( ImgXRGB );
while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {
ClearDrawScreen( );
DrawBox( 0, 0, 640, 480, ColBack, TRUE );
DrawGraph( 0, 0, ghFile, TRUE ); // File(1)
DrawGraph( 80, 0, ghFile, FALSE ); // File(2)
DrawGraph( 160, 0, ghARGB, TRUE ); // ARGB(1) ... 完全に透過してしまう
DrawGraph( 240, 0, ghARGB, FALSE ); // ARGB(2) ...白くならない
DrawGraph( 320, 0, ghXRGB, TRUE ); // XRGB(1) ...白くならない
DrawGraph( 400, 0, ghXRGB, FALSE ); // XRGB(2)
DrawString( 0, 64, "FILE 1 2 ARGB 1 2 XRGB 1 2", ColStr );
ScreenFlip( );
}
DxLib_End( );
return 0;
}