Dieser Tip zeigt Ihnen wie man mit ein paar Tricks einen dem Task Manager ähnlichen CPU Chart direkt auf dem Desktop zeichnen kann. Dazu legen Sie ein neues Windows-Form-Projekt an und nennen es zum Beispiel CPUToDesktop. Formeinstellungen:
Fügen Sie dem Form einen System-Timer mit folgenden Einstellungen hinzu:
Um das Forumlar unsichtbar zu machen und trotzdem noch darauf zeichnen zu können bedienen wir uns einiger neuer Einstellungen der Winform:
Wenn Sie das Projekt jetzt kompilieren werden Sie feststellen, dass kein Formular sichtbar wird. Nun kommen wir zum Source-Code: Private perfCounter As System.Diagnostics.PerformanceCounter Private gDraw As Graphics Private fnt As Font Private lngFntHeight As Long Private lngFntX As Long Private fillBrsh As SolidBrush Dim brsh As SolidBrush Das Form Load Ereignis: Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim rectF As SizeF ' --> Der Performance Counter wird verwendet um die CPU Last auszulesen perfCounter = New System.Diagnostics.PerformanceCounter perfCounter.CategoryName = "Processor" perfCounter.CounterName = "% Processor Time" perfCounter.InstanceName = "_Total" ' --> Formular im Linken unteren Bereich des Bildschirms ausrichten Me.Location = New Point(Screen.PrimaryScreen.WorkingArea.Width - Me.Width - 5, _ Screen.PrimaryScreen.WorkingArea.Height - Me.Height - 5) Me.Width = 80 ' --> Font für die CPU Auslastung fnt = New Font("Arial", 14, FontStyle.Bold, GraphicsUnit.Pixel) ' --> String ausmessen rectF = MeasureTheString() lngFntHeight = rectF.Height ' --> Ausrichtung der Schrift auf der X-Achse lngFntX = Me.Width - rectF.Width ' --> GDI Objekte fillBrsh = New SolidBrush(Color.FromArgb(0, 255, 0)) brsh = New SolidBrush(Color.FromArgb(255, 192, 255)) gDraw = Me.CreateGraphics ' --> Form im Vordergrund Me.TopMost = True Me.tmrMain.Enabled = True End Sub Die Funktion die Die CPU Last liefert: ' --> Funktion für das Auslesen der CPU Auslastung über ' --> einen Performance Counter Private Function GetCPULoad() As Integer Return Integer.Parse(Format(perfCounter.NextValue, "##0")) End Function Hilfsfunktion für das Ausmessen eines Strings als SizeF-Struktur: ' --> Funktion für das Ausmessen eines Strings Private Function MeasureTheString() As SizeF Dim g As Graphics = Me.CreateGraphics Dim retValue As SizeF retValue = g.MeasureString("100 %", fnt) g.Dispose() Return retValue End Function Das Timer-Event: Private Sub tmrMain_Elapsed(ByVal sender As System.Object, _ ByVal e As System.Timers.ElapsedEventArgs) Handles tmrMain.Elapsed Call repaintForm() End Sub Die eigentliche Zeichenroutine: ' --> Die eigentliche Zeichnenfunktion Private Sub repaintForm() Dim intRectHeight As Integer = 2 Dim intSpace As Integer = 1 Dim intRectWidth As Integer = 80 Dim intCPULoad As Integer = GetCPULoad() ' --> Löschen des FormInhaltes gDraw.Clear(Color.FromArgb(255, 192, 255)) ' --> Zeichnen der Rectangles ' (ein Rectangle für jedes Prozent CPU Auslastung) For idx As Integer = 0 To intCPULoad - 1 gDraw.FillRectangle(fillBrsh, 0, (Me.Height - intRectHeight - _ (lngFntHeight + 2)) - idx * (intRectHeight + intSpace), _ Me.Width, intRectHeight) Next ' --> Zeichnen der CPU Auslastung als Text gDraw.DrawString(intCPULoad.ToString & " %", fnt, fillBrsh, _ lngFntX, Me.Height - lngFntHeight) End Sub Das Aufräumen: ' --> GDI Objekte zerstören Private Sub Form1_Closed(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Closed gDraw.Dispose() fillBrsh.Dispose() brsh.Dispose() End Sub Dieser Tipp wurde bereits 20.257 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. |
Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Tipp des Monats September 2024 Dieter Otter Übergabeparameter: String oder Array? Mit der IsArray-Funktion lässt sich prüfen, ob es sich bei einem Übergabeparameter an eine Prozedur um ein Array oder einer "einfachen" Variable handelt. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |