Изображения на форме - VB
Формулировка задачи:
Помогите пожалуйста решить задачу!
Разработать приложение, позволяющее изображать на форме имитацию сферы (метод Circle в цикле), куба (метод Line в цикле), закрашенный эллипс. Ввести в интерфейс приложения следующие элементы управления:
1) созданный на основе объектов HScrollBar и VScrollBar, позволяющие изменять размеры сферы, куба, эллипса;
2) управляющие автоматическим сжатием/увеличением сферы и куба (пульсирующие сфера и куб).
P.S. если можно с комментариями, хотябы небольшими)
Заранее большое спасибо!
Решение задачи: «Изображения на форме»
textual
Листинг программы
Option Explicit Dim WithEvents picDisp As PictureBox, _ WithEvents hsbSize As HScrollBar, _ WithEvents hsbZoom As HScrollBar, _ WithEvents tmrTime As Timer, _ WithEvents cboType As ComboBox Private Sub Form_Resize() On Error Resume Next If ScaleHeight <= 1000 Or ScaleWidth <= 2000 Then Exit Sub picDisp.Move 100, 100, ScaleWidth - 200, ScaleHeight - 1000 hsbSize.Move 100, ScaleHeight - 800, ScaleWidth - 200 hsbZoom.Move 100, ScaleHeight - 400, ScaleWidth - 2000 cboType.Move ScaleWidth - 1800, ScaleHeight - 400, 1700 End Sub Private Sub Form_Unload(Cancel As Integer) On Error GoTo 1 Cancel = 1: Set picDisp = Controls.Add("VB.PictureBox", "picDisp") Set hsbSize = Controls.Add("VB.HScrollBar", "hsbSize") Set hsbZoom = Controls.Add("VB.HScrollBar", "hsbZoom") Set tmrTime = Controls.Add("VB.Timer", "tmrTime") Set cboType = Controls.Add("VB.Combobox", "cboType") picDisp.ScaleMode = vbPixels: picDisp.FillStyle = vbSolid: picDisp.AutoRedraw = True hsbSize.Max = 100: hsbSize.Min = 0: hsbSize.Value = 50 hsbZoom.Max = 100: hsbZoom.Min = 0: hsbZoom.Value = 50 picDisp.Visible = True: hsbSize.Visible = True: hsbZoom.Visible = True tmrTime.Interval = 32 cboType.AddItem "Сфера": cboType.AddItem "Куб": cboType.AddItem "Эллипс" cboType.ListIndex = 1: cboType.Visible = True: Form_Resize Exit Sub 1 End Sub Private Sub tmrTime_Timer() Static ph As Single, cz As Single, x As Single, y As Single, d As Single, _ p As Single, s As Long, l As Long, q As Single q = (hsbZoom.Value / 100) cz = Sin(ph) * q ph = ph + 0.03: picDisp.Cls s = IIf(ScaleWidth > ScaleHeight, picDisp.ScaleHeight / 4, picDisp.ScaleWidth / 4) * (hsbSize.Value / 100) s = s + s * cz: If s = 0 Then Exit Sub Select Case cboType.ListIndex Case 0 picDisp.DrawStyle = 5 d = 1.5707963267949 / s: p = 0: x = picDisp.ScaleWidth / 2: y = picDisp.ScaleHeight / 2 For l = 0 To s - 1 q = Exp(p - 1.5707963267949) * 255 picDisp.FillColor = RGB(Sin(p) * 255, q, q) picDisp.Circle (x, y), s s = s - 1: p = p + d: x = x - 0.4: y = y - 0.4 Next Case 1 picDisp.DrawStyle = 0 x = picDisp.ScaleWidth / 2 - s: y = Int(picDisp.ScaleHeight / 2 - s) picDisp.Line (x, y)-Step(s * 2, s * 2), &HA0A0FF, BF x = x + 1: y = y - 1: q = s / 2.5 For l = 0 To q - 1 picDisp.Line (x, y)-Step(s * 2, 0), &H323280 picDisp.Line (Int(x + s * 2), y)-Step(0, s * 2), &H5252A0 x = x + 1: y = y - 1 Next Case Else picDisp.DrawStyle = 5 x = picDisp.ScaleWidth / 2: y = picDisp.ScaleHeight / 2 picDisp.FillColor = vbRed picDisp.Circle (x, y), s * 2, , , , 0.5 End Select End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д