[질문]픽쳐박스(picturebox),이미지(image) 이동 방법좀 봐주세요. | etc 2006-07-31 오후 2:22:30
용대건 (sunny) 번호: 246824 / 평점: (-) / 읽음:342
하다가 잘 안되는게 있어서 고수님들 도움좀 받을려고 올립니다.
픽쳐박스 안에 이미지 개체를 놓았구요..
픽쳐박스 안에서 이미지 개체를 드래그해서 미세하게 이동 시킬려고 합니다.
Private Sub img1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
vSavedMousePointX = X
vSavedMousePointY = Y
img1.Drag 1
End Sub
그래서 픽쳐박스 DragDrop 이벤트안에..
Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
img1.Move X – vSavedMousePointX, Y – vSavedMousePointY, img1.Width, img1.Height
img1.Drag 2
End Sub
문제는 픽쳐박스내에서 드래그해서 움직이는 마우스위치값 (X,Y)이 이미지개체의 위치값 보다 크면
–( 이미지 개체 사이즈값 보다 크면 ) — 잘 되는데 ( 마우스를 드롭한 위치에 잘 놓이게 되는데) —
값이 이미지 개체 값보다 작거나 같으면–( 조금 밖에 안움직이면)– 안 움직이고 원재 자리로 되돌아 간다는 것입니다.
그래서 이미지개체 선택후 마우스 드래그 하면서 값을 보니.. 포인터가 이미지 개체를 벗어난 이후 부터 x, y 값을
인식하는 것 같더라고요…저는 약간 만 움직여도 정확한 위치에 놓이게 하고 싶은데…
어떻게 방법이 없을 까요? 도와 주세요..
[답변]DragDrop 이벤트가 자기 자신에게 일어나서 그렇습니다. 2006-07-31 오후 2:41:23
홍인천 (rhdgj) 번호: 246831 / 평점: (-)
놓은 위치가 자신의 위치라면…
DragDrop 이벤트는 컨테이너인 Picture1에서 일어나는게 아니라..
자기 자신…즉 image1 에서 일어납니다…
아래…코드를 약간 변경했습니다…
님과는….img1 이 image1으로 변경된거 외에는 바뀔게 없으니…복사해다가 고쳐서 사용하세요…^^
Dim vSavedMousePointX As Single, vSavedMousePointY As Single
Dim nOrgLeft As Long, nOrgTop As Long
Private Sub Image1_DragDrop(Source As Control, X As Single, Y As Single)
Image1.Move nOrgLeft + X – vSavedMousePointX, nOrgTop + Y – vSavedMousePointY, Image1.Width, Image1.Height
Image1.Drag 2
End Sub
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
vSavedMousePointX = X
vSavedMousePointY = Y
nOrgLeft = Image1.Left
nOrgTop = Image1.Top
Image1.Drag 1
End Sub
Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single)
Image1.Move X – vSavedMousePointX, Y – vSavedMousePointY, Image1.Width, Image1.Height
Image1.Drag 2
End Sub
[답변]윗분말이 마자요 2006-07-31 오후 2:47:50
이명하 (mhlee36) 번호: 246833 / 평점: (-)
Private Sub Img1_DragDrop(Source As Control, X As Single, Y As Single)
Img1.Move Image1.Left + (X – vSavedMousePointX), Img1.Top + (Y – vSavedMousePointY), Img1.Width, Img1.Height
Img1.Drag 2
End Sub
이거 추가히시면 될듯