README.TXT (0.73 版) TNkDIB をご利用いただきありがとうございます。 1.概要 TNkDIB クラスは、TBitmap や TMetafile 等と同様の TGraphic の派生クラスで、 Delphi で DIB(Device Independent Bitmap) を扱うための専用クラスです。 TNkDIB は 4/8Bit RLE、非圧縮 1/4/8/16/24/32ビット形式(*) の DIB をサポート し、ファイル、ストリーム、クリップボードと入出力できます。DIB のカラーテーブル や、ピクセルを 専用の Propety を介して高速かつ簡単に編集できます。 TNkDIBCanvas を使えば、Canvas も使って描画できます。 DIB の形式変換も行えるため、例えば True Color のビットマップを 8Bit RLE 形式で ファイルにセーブしたりすることができます。 (*) 16/32 bpp はファイル又はクリップボードからの読み込みのみでサポート。 16/32 bpp は 24bpp に変換されて取り込まれます。 TNkDIB は Delphi に標準で備わっている TBitmap と似ていますが TBitmap と比べた場合の以下の利点が有ります。 (1) ビットマップ上の任意のピクセル値をアクセスするための Pixels Property を 持っており、TBitmap の Canvas.Pixels Property の 20倍程度 の速度で 高速にアクセスできる。 (2) 任意の DIB 形式に DIB を変換できる。色ビット数の多い DIB から色ビット数 の少ない DIB へ変換するときは自動的にビットマップを最適化カラーに減色する。 RLE 圧縮もサポートしており、圧縮したビットマップをファイルにセーブできる。 (3) カラーテーブル(パレット)を編集するための専用の Property がある。 パレットの面倒な操作が不要。 (4) 256色のシステムで True Color のビットマップを美しく表示できる。 (5) Windows 95 でもハーフトーン表示が出来る。 (6) 白黒2値のみでハーフトーンをサポートしないモノクロプリンタで、ハーフトーン 印刷が出来る。 TNkDIB は Delphi 3.X/4.0/5.0/6.0/7.X/2009, C++Builder 3.0J 用です。 Delphi 2005, 2006, 2007,C++Builder 4,5,6,2007,2009 でも でもおそらく動作しますが、確認を行っておりません。 Your own Risk でご利用ください。 2.著作権について このプログラムの著作権は 中村 拓男 が保持します。しかし、配布/改変/利用は 完全に自由です。BBS, NetNews, Mailing List, Software Archive 等に転載も 自由です。何の制限も有りません。ただ、一言連絡していただけるとうれしいです。 TNkDIB を有償化する予定は今のところ全く有りませんがその権利は留保します。 ただし、例え有償化したとしても、この版(0.73 及びその前の版) は永遠に無償です。 本プログラムの不具合による損害の責任は負いません。 3. 連絡先 ご意見、ご希望、ご感想、バグレポート等がございましたら、 nakamuri@asahi.email.ne.jp まで 4. 改訂履歴 1997.3.22 0.11 版 α版 初版 1997.3.24 0.12 版 α2版 大幅なバグ修正。 BitCount Property の Write 処理を追加。 この Readme.txt を作成。 1997.3.25 0.13 版 α3版 ConvertTo8BitRGB のメモリーリークを修正 TNkImage.pas のおおぼけバグを修正。 readme.txt を改訂 manual.txt を作成 1997.3.29 0.21 版 α4版 1 bpp のサポートを追加 Palette property への 書き込みをサポート TNkDIBCanvas(TNkDIB 用 Canvas) を追加。 Readme.txt, Manual.txt を改訂 1997.4.7 0.22 版 α5版 複数の TNkDIB が DIB を共有している時、 TNkDIBCanvas が共有を解除しない点を修正。 manual.txt の TNkDIBCanvas の使用例を修正。 1997.4.27 0.23 版 α6版 ENkDIBOutOfResource 例外を廃止。一般的な EOutOfResources に置き換えた。 manual.txt の 1.インストールを改訂 1997.5.2 0.31 版 α7版 設計時に DIB ファイル(*.dib) を読む機能を 追加。TNkDIBCanvas の Destructor のバグを1件修正。 1997.5.4 0.32 版 α8版 TNkGraphic を TNkDIB.pas から分離。 またインストールの方法を変更。 readme.txt, manual.txt を更新。 1997.6.8 0.33 版 α9版 manual.txt のクリップボードに関する記述を修正 1997.6.29 0.34 版 α10版Delph 3.0J に対応。ClipboardFormat Property を新設。 1997.8.25 0.41 版 α11版。TNkCanvas を高速化。Pixels Property 高速化 要望の多かった ScanLine Property を新設。 1997.8.28 0.42 版 α12版。Pixels Property をさらに高速化 1997.9.5 0.43 版 α13版。クリップボードからのデータの取得をサポート 1997.9.17 0.44 版 α14版。TNkDIB の パレットの不具合を修正しました。 1997.9.18 0.45 版 α15版。BitCount Property が 1bpp を許容するように 修正しました。 1997.10.12 0.51 版 α16版。16bpp/32bpp をサポート Delphi 3.0J の Palette Modified Property を サポート(^^; (Delphi 3.0J の対応漏れです。) 1997.10.13 0.52 版 α17版。α16版の修正漏れを修正。 1997.11. 1 0.53 版 α18版。C++Builder での不具合対処。 1998. 1.12 0.61 版 大改造 (1) PixelFormat Proeprty 追加。あらゆる形式間で変換が可能になった。 関連して ConvertMode Property(True Color からの減色精度の指定)と 関連してBgColor Property(1bpp 非圧縮への変換時 背景色を指定) を追加した。 (2) 減色処理で OnProgress Event が起きるようになった。 (3) Pixels Property が全非圧縮形式で利用可能になった。 注意:(1) 非互換性有り。True Color にカラーテーブルが付いている場合 0.53 ではその色に減色したが、0.61 では自分で最適化パレットを 作る。 (2) 古くなった メソッド有り。以下のメソッドは「次版」(0.7X)で 廃止する予定 ・CreateTrueColorPaletteHigh/CreateTrueColorPaletteLow -> CreateTrueColorPalette と ConvertMode に集約した。 ・ConvertTo8BitRGB/ConvertToTrueColor -> PixelFormat Property に機能を吸収した。 1998. 1.18 0.62 版 LoadFromClipboardFormat のバグを対処 1998. 1.31 0.63 版 TNkDIB.AssignTo メソッドで、Delphi 3.X の場合 代入先が TBitmap の場合、TBitmap をTNkDIB の DIB に最も近い DIB 形式になるように TBitmap の PixelFormat を設定してからコピーするように しました。こうすることで、色の品質を落とすこと 無くビットマップがコピーされます。 1998.5.3 0.64 版 (1)ハーフトーン化処理を追加 (2)AssignTo で代入先が TBitmap で、TBitmap の Width/Height が0でない 場合に例外があがる問題を対処 (3)IDE や アプリケーション終了時にメモリ不正アクセスが起こる問題を対処。 Delphi 3.X では VCL がパッケージとして複数に別れていることから NkDIB ユニットの Finalization の処理で Graphics ユニットに登録された NkDIB の拡張子、クリップボードフォーマットの情報を TPicture.UnRegisterGraphicClass で取り除く必要が有る。 # Borland さん こういう重要な情報は互換性情報にしっかり書いてくれ!! Direct X コンポーネントで著名な 堀さん ご指摘ありがとうございましたm(_ _)m (4)コンパイラ指令をソースに埋め込んだ(^^; (5)NkDIB.inc を追加 TNkDIB の Version 情報を識別するためのシンボルを 作りました。詳細は NkDIB.inc を参照してください。 1998.5.5 0.65 版 (1) C++Builder 3.0J に対応。 (2) サンプルプログラムを添付 (PhotoDemo, Thumbnail) 1998.9.27 0.66 版 Delphi 4.0J に対応。 1999.11.3 0.70版 (1) Delphi 2/ C++Builder 1 のサポート打ち切りました。 (2) Assign メソッドで OnChange イベントが発生しないバグを修正 (3) TNkDIB が変更されるとき(OnChange イベントが起きるとき) Modified property が True にならないバグを修正 (4) ConvertTo8BitRGB, ConvertToTrueColor, CreateTrueColorPaletteHigh, CreateTrueColorPaletteLow Compression を廃止 (5) XPelsPerMeter/YPelsPerMeter プロパティの追加 (6) ビットフィールド形式の DIB を読むとき、 RGB 値を 24bpp に変換するときのロジックを改善。 (0.66 までは若干暗めに変換されていた) (7) UseFMO プロパティの新設 (8) LoadFromStream で ピクセル情報の読み込み位置を bfOffBits に 従うように変更 (9) Delphi 5 に対応 1999.11.8 0.71版 (1) UseFMO 関係で 多数バグ修正(^^; (2) LoadFromClipboardFormat で メモリリークが例外発生時 起きないように修正。 (3) LoadFromStream で 例外発生時に メモリリークが 起きないように修正。 (4) FAQ.txt を添付 1999.11.13 0.72版 (1) NkDefaultUseFMO 関数を追加。マニュアルを改訂。 2001.7.7 0.73版    (1) Delphi 6 日本語ベータで動作確認。マニュアル修正。 2002.9.1 (1) 0.73 版を Delphi 7 Studio Field Test 版で動作確認 2009.3.29 (1) 0.73 版を Delphi 2009(Win32) で動作確認