用三維餅圖分析各階段人數比例

來源:互聯網
上載者:User

 ‘設計一程式,用三維餅圖表達考試成績分別在 優秀、良好、中等、及格和不及格 5個區間的學生人數比例關係(程式運行介面已上傳至相簿VB6)

Option Base 1
Private Sub Command1_Click()
Dim map(5) As Single, total!, i%, j%
For i = 1 To 5
 map(i) = Val(Text1(i - 1))          ' 將各文字框中的資料存入數組map中
 If map(i) = 0 Then j = j + 1
 total = total + map(i)
Next
 If total = 0 Or j > 1 Then
  MsgBox "至少要輸入2個區間段的人數!!"
  Exit Sub
 End If
For i = 1 To 5
 map(i) = map(i) / total
Next
Call drawcake(map)          ' 調用畫圖過程,實參為數組
End Sub

Private Sub Command2_Click()
Unload Me              ’強制退出程式 或者用 end
End Sub

 

Private Sub Form_Activate()
 Text1(0).SetFocus
End Sub

Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
 KeyAscii = 0        '如果按非數字鍵或退格鍵,取消按鍵
End If
End Sub

Public Sub drawcake(map() As Single)
 Const pi! = 3.1415926
 Dim i%, rate!, mx!, my!, mr!
 mx = 2500: my = 1200                 ' 圓心座標
 mr = 2000                            ' 圓的半徑
 rate = 0.4                           ' 橢圓的短軸與長軸之比
 Picture1.Cls
 Picture1.FillStyle = 0            ' 完全填充
 For i = 1 To 200    '用迴圈語句畫200個圓 從而實現從二維圖到三維圖的轉化
 If map(1) > 0 Then
  Picture1.FillColor = RGB(208, 128, 128)      '設定所畫地區填充紅色
  Picture1.Circle (mx, my - i), mr, vbRed, -2 * pi, -2 * pi * map(1), rate '畫出所佔比例部分扇形
 End If
 If map(2) > 0 Then
  Picture1.FillColor = RGB(240, 240, 128)    '設定所畫地區填充黃色
  Picture1.Circle (mx, my - i), mr, vbYellow, -2 * pi * map(1), -2 * pi * (map(2) + map(1)), rate '畫出所佔比例部分扇形
 End If
If map(3) > 0 Then
  Picture1.FillColor = RGB(128, 128, 240)  '設定所畫地區填充藍色
  Picture1.Circle (mx, my - i), mr, vbBlue, -2 * pi * (map(1) + map(2)), -2 * pi * (map(3) + map(2) + map(1)), rate
 End If
   If map(4) > 0 Then
  Picture1.FillColor = RGB(240, 0, 208) '設定所畫地區填充紫紅色
  Picture1.Circle (mx, my - i), mr, vbMagenta, -2 * pi * (map(1) + map(2) + map(3)), -2 * pi * (map(4) + map(3) + map(2) + map(1)), rate
 End If
  If map(5) > 0 Then
  Picture1.FillColor = RGB(128, 240, 128) '設定所畫地區填充綠色
  Picture1.Circle (mx, my - i), mr, vbGreen, -2 * pi * (map(1) + map(2) + map(3) + map(4)), -2 * pi * (map(5) + map(4) + map(3) + map(2) + map(1)), rate
  End If
 Next
 
 For i = 1 To 5         ' 設定各區間人數所佔百分比的資料據式
  map(i) = Val(Format(map(i) * 100, "0.0"))
 Next
  Picture1.FillColor = RGB(208, 128, 128) ' 設定同色的方塊填充色----------- 紅色
  Picture1.Line (1600, 2700)-(1900, 2400), , B               ' 畫小方塊
  Picture1.Print Space(3); "優秀:"; map(1) & "%", "(" & Text1(0) & "人)"            '輸出標註資訊
  
    Picture1.FillColor = RGB(240, 240, 128)  ' 設定同色的方塊填充色----------- 黃色
  Picture1.Line (1600, 3200)-(1900, 2900), , B               ' 畫小方塊
  Picture1.Print Space(3); "良好:"; map(2) & "%", "(" & Text1(1) & "人)"              '輸出標註資訊
 
     Picture1.FillColor = RGB(128, 128, 240)  ' 設定同色的方塊填充色----------- 藍色
  Picture1.Line (1600, 3700)-(1900, 3400), , B               ' 畫小方塊
  Picture1.Print Space(3); "中等:"; map(3) & "%", "(" & Text1(2) & "人)"              '輸出標註資訊
 
     Picture1.FillColor = RGB(240, 0, 208) ' 設定同色的方塊填充色----------- 紫紅色
  Picture1.Line (1600, 4200)-(1900, 3900), , B               ' 畫小方塊
  Picture1.Print Space(3); "及格:"; map(4) & "%", "(" & Text1(3) & "人)"              '輸出標註資訊
 
     Picture1.FillColor = RGB(128, 240, 128) ' 設定同色的方塊填充色----------- 綠色
  Picture1.Line (1600, 4700)-(1900, 4400), , B               ' 畫小方塊
  Picture1.Print Space(3); "不及格:"; map(5) & "%", "(" & Text1(4) & "人)"              '輸出標註資訊
End Sub

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.