vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
Rubrik: Grafik und Font   |   VB-Versionen: VB.NET18.03.05
Ein CPU-Chart mit GDI+

Dieser Tip zeigt Ihnen wie man mit ein paar Tricks einen dem Task Manager ähnlichen CPU Chart direkt auf dem Desktop zeichnen kann.

Autor:   Stefan MährBewertung:     [ Jetzt bewerten ]Views:  14.789 
www.visualsoft-net.deSystem:  WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    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:

    • Height: 300
    • Width: 80

    Fügen Sie dem Form einen System-Timer mit folgenden Einstellungen hinzu:

    • Name: tmrMain
    • Enabled: False
    • Interval: 1000

    Um das Forumlar unsichtbar zu machen und trotzdem noch darauf zeichnen zu können bedienen wir uns einiger neuer Einstellungen der Winform:

    1. Setzen Sie die BackColor-Eigenschaft des Formulares auf: 255; 192; 255
    2. Setzen Sie die TransparencyKey-Eigenschaft des Forumlares ebenfalls auf: 255; 192; 255
    3. Setzen Sie die FormBorderStyle-Eigenschaft auf None

    Wenn Sie das Projekt jetzt kompilieren werden Sie feststellen, dass kein Formular sichtbar wird.

    Nun kommen wir zum Source-Code:
    Zuerst unsere für das Formular global verfügbare Variablen:

    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 14.789 mal aufgerufen.

    Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

    Über diesen Tipp im Forum diskutieren
    Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

    Neue Diskussion eröffnen

    nach obenzurück


    Anzeige

    Kauftipp Unser Dauerbrenner!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.
     
       

    Druckansicht Druckansicht Copyright ©2000-2015 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.
    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.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel