Imageコントロールで画像を表示する
                                                        玄関へお回り下さい。
Imageコントロールを使って画像を拡大・縮小・移動表示する       (030)
     1.表示できる画像の種類
  bmp・dib・gif・jpg・wmf・emf・ico・curの拡張子のファイル

2.Picture プロパティについて
  機能  表示するイメージをPictureプロパティに設定する
  構文  object.Picture [= picture] とヘルプに書いているので
       Image1.Picture="c:\gazou.bmp" と書くとエラーになります
       正しくは 
Set Image1.Picture=LoadPicture("gazou.bmp")とLoadPicture関数を
       使います
       又イメージファイル名は、フルパスで記入されることをお奨めします。

尚、イメージデータはデザイン時にも指定することができますがその場合コンパイル等したプログラム内にデータが含まれます。
画像データを別に添付しなくても、表示されますが、プログラムサイズは、その分大きくなります。逆にプログラム内で読込んだ場合プログラムと画像を配布しないと表示できません。

3.Stretch プロパティについて
  機能  True ならイメージのサイズがImageコントロールの大きさに合うように
       拡大・縮小される
       False ならイメージのサイズにImageコントロールの大きさが合うように
       拡大・縮小される

4.イメージの拡大・縮小の仕方
  1 StretchプロパティをFalseで画像を読込み表示する
  2 元の画像の幅・高さを変数に代入しておく
  3 拡大・縮小の命令によりImageコントロールの寸法を変える
変数の宣言
Dim lngImageHeight As Long
Dim lngImageWidth  As Long
Dim lngX           As Long
Dim lngY           As Long

Private Sub Command3_Click()
'画像の読込
    If lngImageHeight = 0 Then           '初めてクリックした時
        lngImageHeight = Image1.Height   '変数に元の画像サイズを記録する
        lngImageWidth = Image1.Width
    End If
    Image1.Stretch = True
    Image1.Height = lngImageHeight
    Image1.Width = lngImageWidth
    Set Image1.Picture = LoadPicture("C:\VBRescue\030\image.jpg")
End Sub

5.イメージの拡大・縮小表示の使用例
Private Sub Command1_Click()
    '拡大のMAXの設定
    If lngImageHeight * 2 <= Image1.Height Then Exit Sub
    'イメージのサイズが変更できるように
    Image1.Stretch = True
    'クリックの都度10%づつ拡大する
    Image1.Height = Image1.Height * 1.1
    Image1.Width = Image1.Width * 1.1
End Sub

Private Sub Command2_Click()
    '縮小のMAXの設定
    If lngImageHeight * 0.3 >= Image1.Height Then Exit Sub
    'イメージのサイズが変更できるように
    Image1.Stretch = True
    'クリックの都度10%づつ縮小する
    Image1.Height = Image1.Height * 0.9
    Image1.Width = Image1.Width * 0.9
End Sub


6.イメージの表示位置を変える
  1 指定した位置に再表示する場合
Private Sub Command4_Click()
    Image1.Move 50, 50
End Sub


  2 マウスのドラッグ・アンド・ドロップによる位置指定の場合
Private Sub Image1_MouseDown(Button As Integer, Shift _
                                 As Integer, x As Single, y As Single)
    lngX = x                 '現在の表示位置を取得
    lngY = y
    Image1.Drag vbBeginDrag  'コントロールのドラッグを開始します
End Sub

Private Sub Image1_DragDrop(Source As Control, x As Single, y As Single)
    'ドロップ位置に表示
    Source.Move (Image1.Left + x - lngX), (Image1.Top + y - lngY)
End Sub

Private Sub Form_DragDrop(Source As Control, x As Single, y As Single)
    'ドロップ位置がフォーム上の場合
    Source.Move x - lngX, y - lngY
End Sub

3.上下左右に移動する場合
Private Sub Command6_Click()
    'クリックする度に500Twip 上に移動
    Image1.Move (Image1.Left), (Image1.Top - 500)
End Sub

Private Sub Command7_Click()
    'クリックする度に500Twip 下に移動
    Image1.Move (Image1.Left), (Image1.Top + 500)
End Sub

Private Sub Command8_Click()
    'クリックする度に500Twip 左に移動
    Image1.Move (Image1.Left - 500), (Image1.Top)
End Sub

Private Sub Command9_Click()
    'クリックする度に500Twip 右に移動
    Image1.Move (Image1.Left + 500), (Image1.Top)
End Sub

  




02/01/01