Движение картинки по нажатию кнопок "влево" и "вправо" - VB

Узнай цену своей работы

Формулировка задачи:

я не знаю как сделать чтобы при нажатии кнопки влево или вправо image or picture двигались в этом направлении ! Или с мышкой тоже самое ! Куда мыш туда и фигурка! Или при нажатии кнопки мыши фиг. двигалась туда где кликнули )

Решение задачи: «Движение картинки по нажатию кнопок "влево" и "вправо"»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Const MERGEPAINT = &HBB0226
  4. Private Const SRCAND = &H8800C6
  5. Private Const SRCCOPY = &HCC0020
  6. 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
  7.  
  8. ' Variables for positioning the image.
  9. Private OldX As Single
  10. Private OldY As Single
  11. Private CurX As Single
  12. Private CurY As Single
  13. Private PicWid As Single
  14. Private PicHgt As Single
  15. Private Xmax As Single
  16. Private Ymax As Single
  17. Private NewX As Single
  18. Private NewY As Single
  19. Private Dx As Single
  20. Private Dy As Single
  21. Private DistToMove As Single
  22.  
  23. Private Const MOVE_OFFSET = 10
  24.  
  25. ' Draw the picture at (CurX, CurY).
  26. Private Sub DrawPicture()
  27.     ' Fix the part of the image that was covered.
  28.    BitBlt picCanvas.hDC, _
  29.         OldX, OldY, PicWid, PicHgt, _
  30.         picHidden.hDC, OldX, OldY, SRCCOPY
  31.     OldX = CurX
  32.     OldY = CurY
  33.  
  34.     ' Paint on the new image.
  35.    BitBlt picCanvas.hDC, _
  36.         CurX, CurY, PicWid, PicHgt, _
  37.         picXMask.hDC, 0, 0, MERGEPAINT
  38.     BitBlt picCanvas.hDC, _
  39.         CurX, CurY, PicWid, PicHgt, _
  40.         picX.hDC, 0, 0, SRCAND
  41.  
  42.     ' Update the display.
  43.    picCanvas.Refresh
  44. End Sub
  45.  
  46. ' Save picCanvas's original bitmap bytes,
  47. ' initialize values, and draw the initial picture.
  48. Private Sub Form_Load()
  49.     ' Make the form fit the picture.
  50.    Width = (Width - ScaleWidth) + picCanvas.Width
  51.     Height = (Height - ScaleHeight) + picCanvas.Height
  52.  
  53.     PicWid = picX.ScaleWidth
  54.     PicHgt = picX.ScaleHeight
  55.     Xmax = picCanvas.ScaleWidth - PicWid
  56.     Ymax = picCanvas.ScaleHeight - PicHgt
  57.     OldX = 30
  58.     OldY = 30
  59.     CurX = 30
  60.     CurY = 30
  61.  
  62.     DrawPicture
  63. End Sub
  64.  
  65. ' Stop dragging.
  66. Private Sub picCanvas_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  67. Dim dist As Single
  68.  
  69.     ' See where to move the image.
  70.    NewX = x - PicWid / 2
  71.     NewY = y - PicHgt / 2
  72.     If NewX < 0 Then NewX = 0
  73.     If NewX > Xmax Then NewX = Xmax
  74.     If NewY < 0 Then NewY = 0
  75.     If NewY > Ymax Then NewY = Ymax
  76.  
  77.     ' Calculate the moving offsets.
  78.    Dx = NewX - CurX
  79.     Dy = NewY - CurY
  80.     DistToMove = Sqr(Dx * Dx + Dy * Dy)
  81.     Dx = Dx / DistToMove * MOVE_OFFSET
  82.     Dy = Dy / DistToMove * MOVE_OFFSET
  83.  
  84.     ' Enable the move timer.
  85.    tmrMove.Enabled = True
  86. End Sub
  87.  
  88. ' Move the image closer to its destination.
  89. Private Sub tmrMove_Timer()
  90.     DistToMove = DistToMove - MOVE_OFFSET
  91.     If DistToMove <= 0 Then
  92.         CurX = NewX
  93.         CurY = NewY
  94.         tmrMove.Enabled = False
  95.     Else
  96.         CurX = CurX + Dx
  97.         CurY = CurY + Dy
  98.     End If
  99.  
  100.     DrawPicture
  101. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы