トップページ > 記事閲覧
SetUseTransColor(FALSE)時の透過
名前:SmokingWOLF 日時: 2017/01/25 00:42

いつもDXライブラリに大変お世話になっております。 DXライブラリのバージョン3.17b(最新ファイルの更新日時は1/24 1:02)を使用時、 SetUseTransColor( FALSE ); を設定した状況下で、 ・3D機能オン時、24bitの透過付き画像が期待通りに透過されない。 ・3D機能オフ時、24bit画像で画像に設定された透過部分が透過にならない+透過指定がない画像でも真っ黒の部分が透過扱いになる。 という現象を確認いたしましたのでご報告いたします。 環境はこちらのログの通りです。 ttp://silversecond.com/mytmp/20170125_Log.txt 【使用した画像について】  検証に使用した画像は以下の2枚です。 ttp://silversecond.com/mytmp/Test.png ttp://silversecond.com/mytmp/test_BG.jpg  test.pngが24bitの(おそらく)単色透過付きPNG、test_BG.jpgが24bitのJPGファイルです。  これら2つのファイルを使用し、以下のソースで実行しました。 【使用したソース】 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(TRUE) ; // ウィンドウモード //SetUse3DFlag( FALSE ); // ★このコメントアウトを外すと画像の真っ黒の部分が透過されます。コメントアウトを入れると透過されて欲しいところが透過されません。 SetUseTransColor( FALSE ); // 透過色をなくす if( DxLib_Init() == -1 ){ return -1;} // DXライブラリ初期化処理 int GrHandle = LoadGraph( "test.png" );// 画像を読み込み int GrHandle2 = LoadGraph( "test_BG.jpg" );// 画像を読み込み // ESCを押すまでループ while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0){ DrawFillBox( 0, 0, 640, 480, GetColor(255,100,100) ); //ピンクで塗りつぶす DrawGraph( 0, 0, GrHandle, TRUE ); // 画像を描画 DrawGraph( 300, 0, GrHandle2, TRUE ); // 画像を描画 printfDx( "Graphic test" ) ; ScreenFlip(); WaitTimer(16); clsDx( ) ; } DxLib_End() ; // DXライブラリ使用の終了 return 0 ; // ソフトの終了 } 【実行結果と期待する結果】 ・SetUse3DFlag( FALSE );の有無を切り換えて実行した結果と、期待する結果をまとめたものが以下の画像です。 ttp://silversecond.com/mytmp/20170125_DXLib_report.jpg  @3D機能 オン時   左:test.pngの、指定された透過部分が透過されていない。   右:test_BG.jpg画像は透過されないので期待通りです。  A3D機能 オフ時   左:test.pngの指定された透過分(※白部分)と異なる、「黒部分」が透過されてしまう。   右:本来透過が含まれていないtest_BG.jpg画像の「黒部分」が透過されてしまう。  B個人的に期待していた理想の挙動   左:test.pngの、画像に指定された透過箇所のみ透過される   右:test_BG.jpgの画像は透過されない。 画像に設定されている透過の性質上、理想としては3D機能の有無にかかわらず Bのようにできると嬉しいと考えているのですが、そのように設定する手段はございますでしょうか? どちらもアルファチャンネル付きPNG画像などを使えばいいと言われればそうなのですが、 不特定多数のユーザが使うソフトを開発している都合上、もしできるならBの挙動にしたいと考えております。 よければご助言いただけますと幸いです。
メンテ

Page: 1 |

Re: SetUseTransColor(FALSE)時の透過 ( No.1 )
名前:管理人 日時:2017/01/27 12:05

ご報告ありがとうございます すみません、そもそも「アルファチャンネルなし、透過色指定ありのPNGファイル」に対応していませんでした 「アルファチャンネルなし、透過色指定ありのPNGファイル」に対応した上で3D機能オフ時に test_BG.jpg の 黒部分が透過してしまわないように修正したバージョンをアップしましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.exe // C++ Builder 10.1 Berlin 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』をして下さい)
メンテ
Re: SetUseTransColor(FALSE)時の透過 ( No.2 )
名前:SmokingWOLF(解決) 日時:2017/01/27 13:28

いただいた最新版で期待通りの挙動をすることを確認いたしました。 お忙しい中の早々のご対応、誠にありがとうございます!
メンテ

Page: 1 |

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

   クッキー保存