【Class Library】


画像のサムネイル表示
 1つの画像のサムネイル表示であれば、簡単に実行できますが、多くのファイル を一括して表示するとなると結構面倒な処理となります。ここで紹介している クラスを用いれば、指定フォルダ内の画像をピクチャボックスに任意の 大きさで、サムネイル一覧表示が可能です。こんなふうに表示可能です。

大きな特徴としては、ピクチャボックスのサイズにあまり依存していない点です。 つまり、実行中にピクチャボックスがサイズ変更可能であれば、 さらに面白いものができあがります。ただしサンプルでは、固定しています。 サンプルプログラムのクラス中のオブジェクトやメソッドは次の通りです。

★Object★

 フォームに必要とするオブジェクトです。FileListBoxがあることから、 必然的に DirListBox と DriveListBox も必要になってきますが、クラスには 組み込みません。

オブジェクト 割り当て変数名 役割
PictureBox(1) SourcePic 画像をロードする
PictureBox(2) ViewPic サムネイル画像として描画する
FileListBox FileList 画像のファイルパスとファイル名を得る

 配置したオブジェクトのプロパティを変更します。
(プロパティ表)
Picture1
Appearance0-フラット
AutoRedrawTrue
AutoSizeTrue
BorderStyle0-なし
VisibleFalse
Picture2
Appearance0-フラット
AutoRedrawTrue
BorderStyle0-なし
Height240(pixel)
Width360(pixel)
File1
Pattern*.bmp

★Property★

 プロパティプロシージャと単なる変数であるプロパティの列挙です。

変数名 役割 備考
ThumPage サムネイル表示のページ設定 プロパティプロシージャ
ViewPicWidth ViewPicオブジェクトの幅 ViewPicオブジェクトの大きさのみに依存
ViewPicHeight ViewPicオブジェクトの高さ ViewPicオブジェクトの大きさのみに依存
ThumWidth サムネイル画像の幅 ある範囲内で設定可能
ThumHeight サムネイル画像の高さ ある範囲内で設定可能
Hcount ViewPicオブジェクトの横方向に描画できる画像数 上記の値から求まる(直接設定は不可)
Vcount ViewPicオブジェクトの縦方向に描画できる画像数 上記の値から求まる(直接設定は不可)
PicPage サムネイル表示に設定されているページ番号 ThumPageによって設定
MaxPage サムネイル表示の最大ページ番号 上記の値とファイル数から求まる
Max_Width サムネイル画像に設定できる最大幅 ViewPicオブジェクトの大きさに依存
Max_Height サムネイル画像に設定できる最大高さ ViewPicオブジェクトの大きさに依存
MIN_WIDTH サムネイル画像に設定できる最小幅 定数値(=24)
MIN_HEIGHT サムネイル画像に設定できる最小高さ 定数値(=16)

★Method★

 プロシージャの列挙です。

プロシージャ名 処理内容
CheckPictureSize サムネイル画像サイズが設定可能であるかどうか判断する
DrawThumnailGraphic サムネイル画像表示のための処理を行う
GetBairitu サムネイル画像の縮小倍率を得る
GetFileName サムネイル画像にマウスダウンされた位置からそのファイル名を得る
GetMaxPage サムネイル画像が一度に表示できない場合、?ページ分あるかを返す
GetMaxSize ピクチャボックスサイズを得、その値から設定可能なサムネイル画像の最大サイズを得る
PicPreview 1つの画像をサムネイル描画領域に描画する
SaveBitmap サムネイル描画領域をビットマップとして出力する
SetObject クラスにオブジェクトを組み込む
SetThumSize 変数の新規設定処理を行う

★クラスの注意点★

 このクラス内の画像ロード処理には、LoadPicture 関数を使用しているため ディスプレイの環境が16ビットカラー以上でなければ、高画質の画像は 正常な色として表示されません。必ず、65536色、1677色表示可能な環境でご利用下さい。  サンプルプログラムのソースは、Ver4.0で作成されていますが、実行ファイルは Ver6.0で作成しています。Ver4.0ではjpg,gifファイルが表示不可能なためです。 (環境によっては表示される)
 ビットマップとしてセーブする場合、実行ファイルであればファイル指定 ダイアログが開きますが、ソースでは出力ファイル名がカレントディレクトリの "thumtest.bmp"に固定されています。

★その他★

 ソース、実行ファイルともに、ピクチャボックスのサイズは固定されて いますが、実行中にサイズが変更されても、エラーチェックと設定初期化 を行えば(Resizeイベントプロシージャに)、 特に問題なく動作します。
このクラスを使用するにあたってコード上で注意することは、

1.1つのサムネイル画像のサイズを変更したとき
 →設定可能かどうかのエラートラップが必要、MaxPageが変更される
 SetThumSize、GetMaxPageを呼び出す
2.フォルダを変更したとき
 →ファイル数が変更される、MaxPageが変更される
 GetMaxPageを呼び出す
3.ピクチャボックスのサイズが変更されたとき
 →Max_Width、Max_Heightが変更されなければならない
 SetThumSize、GetMaxPageを呼び出す

の3つです。 1.については、サンプルプログラムのように、指定できるテキストボックス がフォーカスを失ったときにエラートラップをかけておく方が簡単です。
3.については、固定されている状態なので関係ないのですが もし変更可能にした場合、ちょうど1.についてのエラートラップ と似た処理をすれば、おそらく大丈夫です。
 本来ならば、この部分でサブクラス化処理を利用するんですよね。


(サンプルプログラムの動作確認)

機種 PC-9821V13S
OS Windows95
開発ツール Visual Basic Ver.4.0(ソース)
Visual Basic Ver.6.0(実行ファイル)
更新日 00/5/1

ダウンロード ソースファイル souThum.lzh(7.40KB)

ダウンロード 実行ファイル exeThum.lzh(15.4KB)

ソースはVisual Basic Ver.5.0,Ver.6.0でも問題なく動作すると思います。
なお、このコーナーに掲載されているプログラムコード、およびプログラムファ イルが原因で起きた損害などに関して一切の責任を負うことはできません。

★このコーナーに掲載されているプログラムコード、およびプログラムファ イルを無断で配布・転載することは、原則として禁止です。ただし実行ファイル はフリーです。


Class Libraryインデックス トップページ


Copyright(C)2000 Tomoya. All rights reserved.