‘設計一程式,用三維餅圖表達考試成績分別在 優秀、良好、中等、及格和不及格 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