11.画像ファイルをスクロール表示しながら連続読み込み |
1.画像ファイルをスクロール表示しながら連続読み込み 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:なし その他 : : |
1.画像ファイルをスクロール表示しながら連続読み込み |
使用コントロールは、PictureBox 3個 FileListBox / VScrollBar 各1個を適当な位置に貼り付けておいて下さい。 Option Explicit 'SampleNo=160 WindowsXP VB6.0(SP5) 2002.07.03 Private Zoom As Single Private MyPath As String Private Sub Form_Load() Me.WindowState = 2 Picture2.Move 0, 0, 18000, 9500 Picture3.Move 0, 0 Picture1.Move 200, 270, 14700, 9500 '画像が保存されているフォルダーを指定して下さい。 MyPath = "C:\MyBitMap\" filFile.Visible = False filFile.Path = MyPath filFile.Pattern = "*.bmp;*.jpg;*.gif" Picture1.Cls Picture2.Cls Picture3.Cls Me.Show Call PictureShow End Sub Private Sub PictureShow() Dim Ritu As Single Dim X As Long Dim Y As Long Dim I As Long Dim LineHei As Long Dim Pic3Wid As Long Dim Pic3Hei As Long Dim MaxSize As Long Picture2.Move 0, 0, 18000, 9500 Ritu = Zoom '縮小率の設定 On Error Resume Next 'ファイルの読み込みエラー等が発生するので Me.MousePointer = vbHourglass '読み込み中の表示 For I = 0 To filFile.ListCount - 1 Set Picture3.Picture = LoadPicture(MyPath & filFile.List(I)) If Err Then Err.Clear MsgBox "ファイルの読み込みでエラーが発生しました" & MyPath & filFile.List(I) Exit For End If Pic3Wid = Picture3.Width Pic3Hei = Picture3.Height MaxSize = Pic3Wid If Pic3Wid < Pic3Hei Then MaxSize = Pic3Hei End If 'この辺の縮小表示は、お好みで設定して下さい。 Select Case MaxSize Case Is < 2000 Ritu = 1 Case Is < 4000 Ritu = 0.8 Case Is < 6000 Ritu = 0.6 Case Is < 8000 Ritu = 0.4 Case Is < 10000 Ritu = 0.3 Case Is < 15000 Ritu = 0.15 Case Is > 50000 Ritu = 0.05 Case Else Ritu = 0.1 End Select '横方向の折り返し処理 If X > 14700 - (Pic3Wid * Ritu) Then X = 0 Y = Y + LineHei + 20 LineHei = 0 If Y >= 7500 Then Picture2.Top = 7500 - Y 'スクロールしながら読み込み Picture2.Refresh End If End If If LineHei < (Pic3Hei * Ritu) Then LineHei = Pic3Hei * Ritu End If If Y > 100000 Then MsgBox "データが多すぎます。縮小して表示して下さい。" Exit For End If If Picture2.Height < LineHei + Y + 1000 Then Picture2.Height = LineHei + Y + 1000 End If Picture2.PaintPicture Picture3.Picture, X, Y, Pic3Wid * Ritu, _ Pic3Hei * Ritu, 0, 0, Pic3Wid, Pic3Hei X = X + (Pic3Wid * Ritu) + 30 Picture2.Refresh Next I Me.MousePointer = vbDefault Picture2.Move 0, 0 Call ScrollBarShow End Sub Private Sub VScroll1_Change() Picture2.Top = -((Picture2.Height - 10000) * (VScroll1.Value / 100)) End Sub Private Sub ScrollBarShow() Dim Pic1H As Long Dim Pic1W As Long Dim Pic1L As Long Dim Pic1T As Long Dim Pic2H As Long Dim Pic2W As Long With Picture1 Pic1H = .Height Pic1W = .Width Pic1L = .Left Pic1T = .Top End With With Picture2 Pic2H = .Height Pic2W = .Width End With With VScroll1 .Top = Pic1T .Left = Pic1L + Pic1W .Height = Pic1H .Max = 100 .Visible = (Pic1H < Pic2H) End With End Sub 図1.上記実行結果 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
指定のフォルダー内の画像を読込PictureBoxに縮小画像を並べて表示 縮小画像をPictureBoxに並べて表示 |