トップページ > 過去ログ > 記事閲覧
アーカイブの読み込みと画像取り込み時の減色について
名前:SS 日時: 2007/06/21 02:03

はじめまして、DXライブラリありがたく使わせていただいております。 グラフィックデータに連番をつけて、 必要な画像を番号で管理、読み込みしようとしています。 memcpy (Mojiretu, "Data\\\\Data", 10); Mojiretu[10] = 0x30 + (DataNo / 100 % 10); Mojiretu[11] = 0x30 + (DataNo / 10 % 10); Mojiretu[12] = 0x30 + (DataNo % 10); memcpy (Mojiretu+0x0d, ".jpg", 4); Mojiretu[17] = '\0' ; G_Data = LoadGraph( Mojiretu ) ; かなりめちゃくちゃではありますが、 上記のような感じでアーカイブ化していないデータなら読めるのですが アーカイブにした場合、読み込むことができません。 それとは別にもう一つ。 GetDrawScreenGraph関数で取り込み、DrawGraph関数で表示させたとき、 画像のグラデーションが無くなり(減色される?) 色が滑らかに変わる箇所が縞模様になってしまいます。 上記2点を回避する方法はないでしょうか。

Page: 1 |

Re: アーカイブの読み込みと画像取り込み時の減色について ( No.1 )
名前:Prometheus 日時:2007/06/21 12:28

sprintf(Mojiretu, "Data\\Data%03d.jpg", DataNo);  ですっきりしますよ。
Re: アーカイブの読み込みと画像取り込み時の減色について ( No.2 )
名前:管理人 日時:2007/06/21 13:45

ssさん始めまして、DXライブラリの管理人です。  読み込みが失敗してしまうのは、\が4つ連続しているのが原因だと思います。 (c言語では文字列リテラル中に \ を表現したい場合は \\ と書く必要がありますが (例えば c:\graph\image.bmp という文字列にしたい場合は c:\\graph\\image.bmp と 書く必要があります)、それでも4つ書いてしまうと Data\\Data という、パスとしては 誤った文字列になってしまいます)  ただ、WindowsOS の API はそう書かれていても正常にファイルにアクセス出来るようです。 (DXライブラリはその表現を許していなかったのでエラーになってしまっていました) とはいえ、フォルダをアーカイブファイルに置き換える機能はなるべく WindowsOS の API と 同じ挙動をしないとフォルダをアーカイブ化した時に正常に動かない事態が発生する 確率が高くなってしまうので、DXライブラリでも Data\\Data となっていても正常に 処理されるように処理を変更しました。  その変更を施したバージョンをこちらにアップしましたので、宜しければお試しに なってみて下さい。m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)  GetDrawScreenGraph関数での減色現象ですが、恐らく画面の色ビット深度と GetDrawScreenGraph関数で取り込んだ先の画像の色ビット深度が違ったからだと 思います。GetDrawScreenGraph関数で取り込む先の画像を MakeGraph 関数で 作成する前に SetCreateGraphColorBitDepth( 32 ); という記述を増やしてみてください。 (この関数は作成する画像の色ビット深度を設定する関数で、32ビットは DXライブラリで扱える画像の中で最も深い色ビット深度です)
Re: アーカイブの読み込みと画像取り込み時の減色について ( No.3 )
名前:SS 日時:2007/06/22 01:40

早速の返答ありがとうございます。 Prometheusさんから教えていただいたこと、及び 管理人さんに対応していただいたバージョンと色深度の設定、 ともに意図したとおりに動作いたしました。 一つ報告しておくと sprintfを使うと以前のバージョンでも読み込みできるようです。 やはり私の元の書式というか考え方がおかしかったようで、 お手間おかけしました。 ともかく、 御対応御教授ありがとうございました。

Page: 1 |