フラクタルエンジンライブラリ TFEngine フラクタルジェネレータ T-Fract
■ メインページ ■ サブボード修正
フラクタル画像はフォームに貼り付けたTImageに描画しています。それを 画像ファイルとして保存する処理を付けたところで問題が発生しました。 保存した画像ファイルが不正なファイルとされてしまうのです。 画像を保存するには、VCLリファレンスに以下のように書かれています。 Image1->Picture->SaveToFile(filename); ところが、これで保存した画像ファイル(BMP)を susie や PhotoshopLE で開こうとすると、不正なファイルだとしてはねつけられてしまいます。 一方、IE やペイントブラシだと読み込めて表示もできます。 昔は確かにこの方法で保存できたはずです。 調査した結果、どうも 32bit形式で BMPファイルが作成されている ようです。もちろん、32bit形式の BMPフォーマットなどありません。 TImage は、実行時の画面モードを検出しているようで、今のビデオカード だと True Color(32bit) が TImage に反映されているようです。 昔使っていたビデオカードでは、Full Color(24bit)だったので、 そのまま画像を保存しても 24bit形式の BMPファイルが作成でき、 偶然うまく行っていたみたいです。 と言うわけで、以下のように TBitmap にコピーした後にフォーマットを、 24bitにし、それを保存することで解決することができました。 Graphics::TBitmap *bitmap = new Graphics::TBitmap; bitmap->Assign(Image1->Picture); bitmap->PixelFormat = pf24bit; bitmap->SaveToFile (SavePictureDialog1->FileName); delete bitmap; 本来、このようにしないと任意の形式で BMPファイルを保存できない わけですね。 実行環境非依存なアプリケーションを作るには、気を付け ないといけないです。 // しかし、IE や ペイントブラシは、非公開のフォーマットまで // サポートしているとは...。 tos.
「もう一人の自分を探すために」というとキザでしょうか?(笑) 世界中、どこを探しても自分の満足いくフラクタル描画ツールがないので、 自分で作るしかないのでした。誰のためでもなく自分自身のために。 制作途中の フラクタルエンジンライブラリを添付しておきます。 何かの参考になれば。(for C++Builder Only) // バックアップも兼ねている。 ^^; tos. [ http://www.tnet.to/filer/50/TFEngine.h 55.04KBytes (56366Bytes) ] [ http://www.tnet.to/filer/50/TFLib.h 3.47KBytes (3560Bytes) ] [ http://www.tnet.to/filer/50/TFEngine.cpp 4.76KBytes (4876Bytes) ]