Das Komplizierte beim Erstellen eines Kreisdiagramms ist normalerweise die Berechnung der einzelnen Kreissegmente. Unter VB.NET ist das jedoch überhaupt nicht schwierig, da man hier auf die "vorgefertige" FillPie-Methode zurückgreifen kann. Erstellen Sie ein neues Windows-Forms-Projekt und platzieren auf die Form ein PictureBox- und ein CommandButton-Control. Fügen Sie nachfolgenden Code in den Codeteil der Form ein. Beim Klick auf den Button wird dann ein Kreisdiagramm mit vorgegebenen Werten gezeichnet. Das Diagramm selbst wird hierbei im PictureBox-Control ausgegeben. Public Class Form1 Inherits System.Windows.Forms.Form Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Werte Dim nValue() As Integer = {10, 20, 30, 15, 45, 12, 28} With PictureBox1 ' Kreis zeichnen (PictureBox wird als Ausgabe-Objekt übergeben) DrawPie(nValue, PictureBox1) End With End Sub ' Einfaches Kreisdiagramm Private Sub DrawPie(ByVal nValue() As Integer, ByVal oOutput As Object) ' Farben Dim nColor() As Color = {Color.Moccasin, _ Color.Navy, _ Color.Yellow, _ Color.Silver, _ Color.SandyBrown, _ Color.Red, _ Color.MistyRose, _ Color.MediumPurple, _ Color.LimeGreen, _ Color.Cyan, _ Color.Beige, _ Color.AliceBlue} ' 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 Next i g.Dispose() End Sub End Class Dieser Tipp wurde bereits 22.459 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |