掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VBでPDFライクに画像を動かすには? (ID:85621)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いろいろ試してようやく解決しました。マウスムーブでスクロールバーを動かし、スクロールバーに連動させてピクチャーボックスを動かせば、範囲内でのみ動かすことができるようになりました。いかにそのプログラムを紹介します。 '画面をPDFライクに動かす方法 'フォーム上にPicture1、HScroll1、VScroll1を配置 ' Dim x2 As Integer 'Picture1の横の座標 Dim y2 As Integer 'Picture1の縦の座標 Dim b102 As Boolean 'Picture1が押されているかを知る Private Sub Form_Load() 'Picture1に適当に線を引く Picture1.Top = 0 Picture1.Left = 0 Picture1.Width = 10000 Picture1.Height = 10000 Picture1.AutoRedraw = True Picture1.ForeColor = &H565656 Picture1.Line (0, 0)-(10000, 10000) Picture1.Line (500, 3000)-(4000, 5000), , BF End Sub Private Sub スクロールバー() 'スクローバーを配置する HScroll1.Left = 0 VScroll1.Top = 0 If Picture1.Width > Me.Width Then HScroll1.Top = Me.ScaleHeight - HScroll1.Height Else HScroll1.Top = Me.ScaleHeight End If If Picture1.Height > HScroll1.Top Then VScroll1.Left = Me.ScaleWidth - VScroll1.Width If Picture1.Width > VScroll1.Left Then HScroll1.Top = Me.ScaleHeight - HScroll1.Height End If Else VScroll1.Left = Me.ScaleWidth End If HScroll1.Width = Me.ScaleWidth If HScroll1.Top > 0 Then VScroll1.Height = HScroll1.Top 'スクロールバーの範囲を設定 HScroll1.Max = Picture1.Width - VScroll1.Left VScroll1.Max = Picture1.Height - HScroll1.Top HScroll1.SmallChange = Abs(HScroll1.Max \ 16) + 1 HScroll1.LargeChange = Abs(HScroll1.Max \ 4) + 1 VScroll1.SmallChange = Abs(VScroll1.Max \ 16) + 1 VScroll1.LargeChange = Abs(VScroll1.Max \ 4) + 1 HScroll1.ZOrder 0 VScroll1.ZOrder 0 b102 = False End Sub Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 'クリックしたところの座標を格納して、クリックしていることを示すためにb102をTrueにする If Button = 1 Then x2 = X y2 = Y b102 = True End If End Sub Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 'クリックしていないことを示すためにb102をFalseにする b102 = False End Sub Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Picture1をクリックしたままであるときにのみ動かす。 If b102 = True Then '有効範囲内のときにのみスクロールバーを動かす '横のスクロールバー If HScroll1.Value - (Val(X) - x2) > HScroll1.Max Or HScroll1.Value - (Val(X) - x2) < 1 Then Else Me.HScroll1.Value = HScroll1.Value - (Val(X) - x2) End If '縦のスクロールバー If VScroll1.Value - (Val(Y) - y2) > VScroll1.Max Or VScroll1.Value - (Val(Y) - y2) < 1 Then Else Me.VScroll1.Value = VScroll1.Value - (Val(Y) - y2) End If Else End If End Sub Private Sub VScroll1_Change() '縦スクロールバーにあわせてPicture1を上下に動かす Picture1.Top = -VScroll1.Value End Sub Private Sub HScroll1_Change() '横スクロールバーにあわせてPicture1を左右に動かす Picture1.Left = -HScroll1.Value End Sub Private Sub Form_Resize() 'フォームの大きさに合わせてスクロールバーをセットする スクロールバー End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.