Изображения на форме - VB

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

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

Помогите пожалуйста решить задачу! Разработать приложение, позволяющее изображать на форме имитацию сферы (метод Circle в цикле), куба (метод Line в цикле), закрашенный эллипс. Ввести в интерфейс приложения следующие элементы управления: 1) созданный на основе объектов HScrollBar и VScrollBar, позволяющие изменять размеры сферы, куба, эллипса; 2) управляющие автоматическим сжатием/увеличением сферы и куба (пульсирующие сфера и куб). P.S. если можно с комментариями, хотябы небольшими) Заранее большое спасибо!

Решение задачи: «Изображения на форме»

textual
Листинг программы
  1. Option Explicit
  2. Dim WithEvents picDisp As PictureBox, _
  3.     WithEvents hsbSize As HScrollBar, _
  4.     WithEvents hsbZoom As HScrollBar, _
  5.     WithEvents tmrTime As Timer, _
  6.     WithEvents cboType As ComboBox
  7.  
  8. Private Sub Form_Resize()
  9.     On Error Resume Next
  10.     If ScaleHeight <= 1000 Or ScaleWidth <= 2000 Then Exit Sub
  11.     picDisp.Move 100, 100, ScaleWidth - 200, ScaleHeight - 1000
  12.     hsbSize.Move 100, ScaleHeight - 800, ScaleWidth - 200
  13.     hsbZoom.Move 100, ScaleHeight - 400, ScaleWidth - 2000
  14.     cboType.Move ScaleWidth - 1800, ScaleHeight - 400, 1700
  15. End Sub
  16.  
  17. Private Sub Form_Unload(Cancel As Integer)
  18.     On Error GoTo 1
  19.     Cancel = 1: Set picDisp = Controls.Add("VB.PictureBox", "picDisp")
  20.     Set hsbSize = Controls.Add("VB.HScrollBar", "hsbSize")
  21.     Set hsbZoom = Controls.Add("VB.HScrollBar", "hsbZoom")
  22.     Set tmrTime = Controls.Add("VB.Timer", "tmrTime")
  23.     Set cboType = Controls.Add("VB.Combobox", "cboType")
  24.     picDisp.ScaleMode = vbPixels: picDisp.FillStyle = vbSolid: picDisp.AutoRedraw = True
  25.     hsbSize.Max = 100: hsbSize.Min = 0: hsbSize.Value = 50
  26.     hsbZoom.Max = 100: hsbZoom.Min = 0: hsbZoom.Value = 50
  27.     picDisp.Visible = True: hsbSize.Visible = True: hsbZoom.Visible = True
  28.     tmrTime.Interval = 32
  29.     cboType.AddItem "Сфера": cboType.AddItem "Куб": cboType.AddItem "Эллипс"
  30.     cboType.ListIndex = 1: cboType.Visible = True: Form_Resize
  31.     Exit Sub
  32. 1
  33. End Sub
  34.  
  35. Private Sub tmrTime_Timer()
  36.     Static ph As Single, cz As Single, x As Single, y As Single, d As Single, _
  37.            p As Single, s As Long, l As Long, q As Single
  38.            
  39.     q = (hsbZoom.Value / 100)
  40.     cz = Sin(ph) * q
  41.     ph = ph + 0.03: picDisp.Cls
  42.     s = IIf(ScaleWidth > ScaleHeight, picDisp.ScaleHeight / 4, picDisp.ScaleWidth / 4) * (hsbSize.Value / 100)
  43.     s = s + s * cz: If s = 0 Then Exit Sub
  44.     Select Case cboType.ListIndex
  45.     Case 0
  46.         picDisp.DrawStyle = 5
  47.         d = 1.5707963267949 / s: p = 0: x = picDisp.ScaleWidth / 2: y = picDisp.ScaleHeight / 2
  48.         For l = 0 To s - 1
  49.             q = Exp(p - 1.5707963267949) * 255
  50.             picDisp.FillColor = RGB(Sin(p) * 255, q, q)
  51.             picDisp.Circle (x, y), s
  52.             s = s - 1: p = p + d: x = x - 0.4: y = y - 0.4
  53.         Next
  54.     Case 1
  55.         picDisp.DrawStyle = 0
  56.         x = picDisp.ScaleWidth / 2 - s: y = Int(picDisp.ScaleHeight / 2 - s)
  57.         picDisp.Line (x, y)-Step(s * 2, s * 2), &HA0A0FF, BF
  58.         x = x + 1: y = y - 1: q = s / 2.5
  59.         For l = 0 To q - 1
  60.             picDisp.Line (x, y)-Step(s * 2, 0), &H323280
  61.             picDisp.Line (Int(x + s * 2), y)-Step(0, s * 2), &H5252A0
  62.             x = x + 1: y = y - 1
  63.         Next
  64.     Case Else
  65.         picDisp.DrawStyle = 5
  66.         x = picDisp.ScaleWidth / 2: y = picDisp.ScaleHeight / 2
  67.         picDisp.FillColor = vbRed
  68.         picDisp.Circle (x, y), s * 2, , , , 0.5
  69.     End Select
  70. End Sub

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


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

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

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

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

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

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