Как нарисовать флаг Исландии - VB

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

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

помогите пожалуйста нарисовать флаг Исландии в Visual Basic задание №3

Решение задачи: «Как нарисовать флаг Исландии»

textual
Листинг программы
Option Explicit
Dim W As Single, H As Single, p As Object
Const PI = 3.14159265
 
Private Sub Form_Load()
    Picture1.AutoRedraw = True
    W = Picture1.Width: H = Picture1.Height
    Set p = Picture1
    p.ScaleMode = 3
    Call FlagRussia
End Sub
 
Private Sub Option1_Click(Index As Integer)
    p.Cls
    Select Case Index
           Case 1: Call FlagRussia
           Case 2: Call FlagGermany
           Case 3: Call FlagUSA
           Case 4: Call FlagFrance
           Case 5: Call FlagGreece
           Case 6: Call FlagUkraine
           Case 7: Call FlagIceLand
       End Select
End Sub
Sub FlagUkraine()
    p.Line (0, 0)-(W, H / 2), vbBlue, BF
    p.Line (0, H / 2)-(W, H), vbYellow, BF
End Sub
Sub FlagGreece()
    Dim i As Integer, strip As Single
    p.BackColor = vbWhite
    strip = H / 9
    For i = 1 To 9 Step 2
        p.Line (0, strip * (i - 1))-(W, strip * i), vbBlue, BF
    Next i
    p.Line (0, 0)-(W / 2, strip * 5), vbBlue, BF
    p.Line (W / 5, 0)-(W / 5 + strip, strip * 5), vbWhite, BF
    p.Line (0, strip * 2)-(W / 2, strip * 3), vbWhite, BF
End Sub
 
Sub FlagFrance()
    p.Line (0, 0)-(W / 3, H), vbBlue, BF
    p.Line (W / 3, 0)-(W - W / 3, H), vbWhite, BF
    p.Line (W - W / 3, 0)-(W, H), vbRed, BF
End Sub
 
Sub FlagRussia()
    p.Line (0, 0)-(W, H / 3), vbWhite, BF
    p.Line (0, H / 3)-(W, H - H / 3), vbBlue, BF
    p.Line (0, H - H / 3)-(W, H), vbRed, BF
End Sub
 
Sub FlagGermany()
    p.Line (0, 0)-(W, H / 3), vbBlack, BF
    p.Line (0, H / 3)-(W, H - H / 3), vbRed, BF
    p.Line (0, H - H / 3)-(W, H), vbYellow, BF
End Sub
 
Sub FlagIceLand()
    Dim i As Integer, StripW As Single, StripH As Single
    StripW = W / 9: StripH = H / 6
    p.BackColor = vbBlue
    p.Line (StripW * 2.3, 0)-(StripW * 3.7, H), vbWhite, BF
    p.Line (0, StripH * 2.3)-(W, StripH * 3.7), vbWhite, BF
    p.Line (StripW * 2.5, 0)-(StripW * 3.5, H), vbRed, BF
    p.Line (0, StripH * 2.5)-(W, StripH * 3.5), vbRed, BF
End Sub
 
Sub FlagUSA()
   Dim px(1 To 11) As Single, py(1 To 11) As Single, x0 As Single, y0 As Single, r As Integer
   Dim a As Integer, i As Integer, j As Integer, k As Integer, strip As Single
   p.BackColor = vbWhite
   strip = H / 13
   For i = 1 To 13 Step 2
      p.Line (0, strip * (i - 1))-(W, strip * i), vbRed, BF
   Next i
   p.Line (0, 0)-(W / 2, strip * 7), vbBlue, BF
   p.DrawWidth = 2
   
   For j = 1 To 6
     For k = 1 To 5
        a = 18
        x0 = (j - 1) * (strip * 1.9) + strip / 2: y0 = (k - 1) * (strip * 1.5) + strip / 2: r = 5
        For i = 1 To 10
          If (i Mod 2 = 0) Then
              px(i) = x0 + Round(r / 2.75 * Cos(a * 2 * PI / 360))
              py(i) = y0 - Round(r / 2.75 * Sin(a * 2 * PI / 360))
          Else
              px(i) = x0 + Round(r * Cos(a * 2 * PI / 360))
              py(i) = y0 - Round(r * Sin(a * 2 * PI / 360))
          End If
            a = a + 36
        Next i
        px(11) = px(1): py(11) = py(1)
        For i = 1 To 10
            p.Line (px(i), py(i))-(px(i + 1), py(i + 1)), vbWhite
        Next i
        p.FillStyle = 0: p.FillColor = vbWhite
        p.Circle (x0, y0), r / 3, vbWhite
    Next k
  Next j
  
  For j = 1 To 5
     For k = 1 To 4
        a = 18
        x0 = (j - 1) * (strip * 1.9) + strip * 1.3: y0 = (k - 1) * (strip * 1.5) + strip * 1.3: r = 5
        For i = 1 To 10
          If (i Mod 2 = 0) Then
              px(i) = x0 + Round(r / 2.75 * Cos(a * 2 * PI / 360))
              py(i) = y0 - Round(r / 2.75 * Sin(a * 2 * PI / 360))
          Else
              px(i) = x0 + Round(r * Cos(a * 2 * PI / 360))
              py(i) = y0 - Round(r * Sin(a * 2 * PI / 360))
          End If
            a = a + 36
        Next i
        px(11) = px(1): py(11) = py(1)
        For i = 1 To 10
            p.Line (px(i), py(i))-(px(i + 1), py(i + 1)), vbWhite
        Next i
        p.FillStyle = 0: p.FillColor = vbWhite
        p.Circle (x0, y0), r / 3, vbWhite
    Next k
  Next j
  
End Sub

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


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

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

12   голосов , оценка 4.167 из 5
Похожие ответы