プロが教えるわが家の防犯対策術!

Image1をPicture1(正方形)にドラッグ&ドロップするプログラム
を作りたいと思っています。


このプログラムだとImage1全体がドラッグされるのではなく、
Image1の絵はその位置に残ってImage1の外枠だけがドラッグされてしまいます。

外枠だけでなくImage1の絵も一緒にドラッグできるようにするにはどうすればいいのでしょうか?


また、このプログラムだとドロップする場所(Picture1_)以外で
ドロップしてしまった場合でも画面上からImage1の絵と外枠が消えてしまいます。

ドロップする場所(Picture1_)以外でドロップしてしまった場合は、
Image1全体を画面上に残しておきたいのですがどうすればいいのでしょうか?



Option Explicit

Dim dx As Single, dy As Single

Private Sub Form_Load()

Image1.Picture = LoadPicture(App.Path & "picture.jpg")
Image1.Stretch = True

End Sub

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)

Source.Move X - dx, Y - dy

End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Image1.Drag 1
dx = X: dy = Y 'マウスダウン位置

End Sub

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
Source.Visible = False 'ドロップオブジェクトを非表示にする
Picture1.BackColor = RGB(255, 255, 255)

End Sub

Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, _
State As Integer)
If State = 0 Then Picture1.BackColor = RGB(0, 0, 255)
If State = 1 Then Picture1.BackColor = RGB(255, 255, 255)
End Sub

A 回答 (1件)

Dim dx As Single, dy As Single


↑の使用目的がわからないので削除しました。

Option Explicit

Private Sub Form_Load()
Image1.Stretch = True
Image1.Picture = LoadPicture(App.Path & "picture.jpg")
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Image1.Drag 1
End Sub

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
Source.Visible = False 'ドロップオブジェクトを非表示にする
Picture1.BackColor = RGB(255, 255, 255)
Picture1.Picture = Source.Picture
End Sub

Private Sub Picture1_DragOver(Source As Control, X As Single, Y As Single, _
State As Integer)
If State = 0 Then Picture1.BackColor = RGB(0, 0, 255)
If State = 1 Then Picture1.BackColor = RGB(255, 255, 255)
Picture1.Refresh
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
うまくできました!

お礼日時:2007/08/31 21:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!