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.190 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevAniGif (VB/VBA) ![]() Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Tipp des Monats ![]() Dieter Otter Beliebige Zeichen am Anfang und Ende eines Strings entfernen Mit der Trim-Funktion lassen sich nicht nur Leerzeichen, sondern bei Bedarf auch beliebige Zeichen entfernen. 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. |