VB : 픽쳐박스(picturebox),이미지(image) 이동 방법

[질문]픽쳐박스(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
이거 추가히시면 될듯
 

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다