Движение картинки по нажатию кнопок "влево" и "вправо" - VB
Формулировка задачи:
я не знаю как сделать чтобы при нажатии кнопки влево или вправо image or picture
двигались в этом направлении ! Или с мышкой тоже самое ! Куда мыш туда и фигурка! Или при нажатии кнопки мыши фиг. двигалась туда где кликнули )
Решение задачи: «Движение картинки по нажатию кнопок "влево" и "вправо"»
textual
Листинг программы
Option Explicit Private Const MERGEPAINT = &HBB0226 Private Const SRCAND = &H8800C6 Private Const SRCCOPY = &HCC0020 Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long ' Variables for positioning the image. Private OldX As Single Private OldY As Single Private CurX As Single Private CurY As Single Private PicWid As Single Private PicHgt As Single Private Xmax As Single Private Ymax As Single Private NewX As Single Private NewY As Single Private Dx As Single Private Dy As Single Private DistToMove As Single Private Const MOVE_OFFSET = 10 ' Draw the picture at (CurX, CurY). Private Sub DrawPicture() ' Fix the part of the image that was covered. BitBlt picCanvas.hDC, _ OldX, OldY, PicWid, PicHgt, _ picHidden.hDC, OldX, OldY, SRCCOPY OldX = CurX OldY = CurY ' Paint on the new image. BitBlt picCanvas.hDC, _ CurX, CurY, PicWid, PicHgt, _ picXMask.hDC, 0, 0, MERGEPAINT BitBlt picCanvas.hDC, _ CurX, CurY, PicWid, PicHgt, _ picX.hDC, 0, 0, SRCAND ' Update the display. picCanvas.Refresh End Sub ' Save picCanvas's original bitmap bytes, ' initialize values, and draw the initial picture. Private Sub Form_Load() ' Make the form fit the picture. Width = (Width - ScaleWidth) + picCanvas.Width Height = (Height - ScaleHeight) + picCanvas.Height PicWid = picX.ScaleWidth PicHgt = picX.ScaleHeight Xmax = picCanvas.ScaleWidth - PicWid Ymax = picCanvas.ScaleHeight - PicHgt OldX = 30 OldY = 30 CurX = 30 CurY = 30 DrawPicture End Sub ' Stop dragging. Private Sub picCanvas_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) Dim dist As Single ' See where to move the image. NewX = x - PicWid / 2 NewY = y - PicHgt / 2 If NewX < 0 Then NewX = 0 If NewX > Xmax Then NewX = Xmax If NewY < 0 Then NewY = 0 If NewY > Ymax Then NewY = Ymax ' Calculate the moving offsets. Dx = NewX - CurX Dy = NewY - CurY DistToMove = Sqr(Dx * Dx + Dy * Dy) Dx = Dx / DistToMove * MOVE_OFFSET Dy = Dy / DistToMove * MOVE_OFFSET ' Enable the move timer. tmrMove.Enabled = True End Sub ' Move the image closer to its destination. Private Sub tmrMove_Timer() DistToMove = DistToMove - MOVE_OFFSET If DistToMove <= 0 Then CurX = NewX CurY = NewY tmrMove.Enabled = False Else CurX = CurX + Dx CurY = CurY + Dy End If DrawPicture End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д