トップページ > 記事閲覧
GetGraphSizeについて
名前:rita 日時: 2017/05/20 19:22

いつもお世話になっております。 テクスチャを作成した後、画像のサイズを取得できません。 int iHandle = CreateGraphFromMem( pData, iSize ); if( iHandle == -1 ) { // 入らない return FALSE; } int w, h; if( GetGraphSize( iHandle , &w, &h ) == -1 ) { // 入らない return FALSE; } w, h ともに 0 が入っています。 作成したテクスチャは DrawGraph で正常に描画されます。 誠に恐縮ですが、お心当たりはございませんでしょうか? よろしくお願いいたします。
メンテ

Page: 1 |

Re: GetGraphSizeについて ( No.1 )
名前:管理人 日時:2017/05/20 23:09

手元の環境で以下のようなプログラムで確認してみましたが、 GetGraphSize で w と h の値が 0 になるということはありませんでした ( Test1.bmp をメモリに読み込み、CreateGraphFromMem でグラフィックハンドルにした後、 GetGraphSize でサイズを取得して、画面にサイズを描画するというプログラムです ) #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { FILE *fp ; void *Data ; int Size ; int GrHandle ; int w, h; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // 画像ファイルのメモリへの読み込み fp = fopen( "Test1.bmp", "rb" ) ; fseek( fp, 0, SEEK_END ) ; Size = ftell( fp ) ; fseek( fp, 0, SEEK_SET ) ; Data = malloc( Size ) ; fread( Data, Size, 1, fp ) ; fclose( fp ) ; // CreateGraphFromMem でグラフィックハンドルを作成 GrHandle = CreateGraphFromMem( Data, Size ) ; // 画像のサイズを取得 GetGraphSize( GrHandle , &w, &h ) ; // 描画先を裏画面に変更 SetDrawScreen( DX_SCREEN_BACK ) ; while( ProcessMessage() == 0 ) { ClearDrawScreen() ; // 画像を描画 DrawGraph( 0, 0, GrHandle, FALSE ) ; // サイズを画面に描画 DrawFormatString( 0, 0, GetColor( 255,255,255 ), "W:%d H:%d", w, h ) ; ScreenFlip() ; } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; } よろしければ ritaさんの環境でも上記のプログラムが正常に動作するか試してみていただけないでしょうか? m(_ _)m
メンテ
Re: GetGraphSizeについて ( No.2 )
名前:rita 日時:2017/05/21 00:52

ありがとうございます。 正常に動作いたしました。 また CreateGraphFromMem のすぐ後ではなく 数フレーム後に GetGraphSize を呼び出すと正常にサイズを取得できているようです。 よろしくお願いいたします。
メンテ
Re: GetGraphSizeについて ( No.3 )
名前:管理人 日時:2017/05/21 09:28

恐らくですが、SetUseASyncLoadFlag( TRUE ) ; が実行され、非同期読み込みがONの状態に なっているのではないかと思います CreateGraphFromMem も非同期読み込みに対応した関数なので、SetUseASyncLoadFlag( TRUE ) ; が実行され、 非同期読み込みが有効になっている場合は CreateGraphFromMem の呼び出し直後では読み込みが完了していないので、 GetGraphSize も「まだ画像が読み込まれてないからサイズを返せないよ」となって、w と h に 0 が代入されてしまいます なので、よろしければ CreateGraphFromMem の前に SetUseASyncLoadFlag( FALSE ) ; を実行してみてください m(_ _)m
メンテ
Re: GetGraphSizeについて ( No.4 )
名前:rita(解決) 日時:2017/05/21 09:55

ありがとうございました。 正常にサイズを取得することができました。
メンテ

Page: 1 |

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

   クッキー保存