' Einfaches Kreisdiagramm:
Private Sub DrawPie(ByVal nValue() As Integer, ByVal oOutput As Object)
' RGB-Farben
Dim arrayRot(10)
As Integer
Dim arrayGelb(10)
As Integer
Dim arrayBlau(10)
As Integer
arrayRot(0) = 204
' dungelblau
arrayGelb(0) = 0
arrayBlau(0) = 0
arrayRot(1) = 204
arrayGelb(1) = 0
arrayBlau(1) = 153
arrayRot(2) = 153
arrayGelb(2) = 0
arrayBlau(2) = 204
arrayRot(3) = 102
arrayGelb(3) = 0
arrayBlau(3) = 204
arrayRot(4) = 0
arrayGelb(4) = 0
arrayBlau(4) = 204
arrayRot(5) = 0
arrayGelb(5) = 102
arrayBlau(5) = 204
arrayRot(6) = 0
arrayGelb(6) = 204
arrayBlau(6) = 204
arrayRot(7) = 0
arrayGelb(7) = 204
arrayBlau(7) = 51
arrayRot(8) = 204
arrayGelb(8) = 204
arrayBlau(8) = 0
arrayRot(9) = 204
arrayGelb(9) = 102
arrayBlau(9) = 0
Dim nColor()
As Color = { _
Color.FromArgb(arrayRot(0), arrayGelb(0), arrayBlau(0)), _
Color.FromArgb(arrayRot(1), arrayGelb(1), arrayBlau(1)), _
Color.FromArgb(arrayRot(2), arrayGelb(2), arrayBlau(2)), _
Color.FromArgb(arrayRot(3), arrayGelb(3), arrayBlau(3)), _
Color.FromArgb(arrayRot(4), arrayGelb(4), arrayBlau(4)), _
Color.FromArgb(arrayRot(5), arrayGelb(5), arrayBlau(5)), _
Color.FromArgb(arrayRot(6), arrayGelb(6), arrayBlau(6)), _
Color.FromArgb(arrayRot(7), arrayGelb(7), arrayBlau(7)), _
Color.FromArgb(arrayRot(8), arrayGelb(8), arrayBlau(8)), _
Color.FromArgb(arrayRot(9), arrayGelb(9), arrayBlau(9))}
' Graphics-Objekt
Dim g
As Graphics = oOutput.CreateGraphics
' Außmaße
Dim nWidth
As Integer = oOutput.Width
Dim nHeight
As Integer = oOutput.Height
' Summe aller Werte ermitteln
Dim nMax
As Integer
Dim i
As Integer
For i = 0
To UBound(nValue)
nMax += nValue(i)
Next
Dim nPercent
As Integer
Dim nAngle
As Integer
Dim nStartAngle
As Integer
Dim brush As System.Drawing.SolidBrush
Dim nColIndex
As Integer = 0
' Kreis zeichnen
For i = 0
To UBound(nValue)
brush = New System.Drawing.SolidBrush(nColor(nColIndex))
' Größe des Kreissegment berechnen
nPercent = CInt(nValue(i) / nMax * 100 + 0.5)
nAngle = 360 * (nPercent / 100)
' Anfangswinkel
If nStartAngle + nAngle > 360
Then nAngle = 360 - nStartAngle
' Segment zeichnen
g.FillPie(brush, New Rectangle(0, 0, nWidth, nHeight), nStartAngle, nAngle)
' neuen Anfangspunkt berechnen
nStartAngle += nAngle
' nächster Farbwert
nColIndex += 1
If nColIndex > UBound(nColor)
Then nColIndex = 0
g.Dispose()
End Sub
Ehrlich gesagt ich verstehe es nicht, außerdem bin ich bei VB.NET und nicht C++
