Char CPU and Memory : Chart « GUI Applications « VB.Net Tutorial

VB.Net Tutorial
1. Language Basics
2. Data Type
3. Operator
4. Statements
5. Date Time
6. Class Module
7. Development
8. Collections
9. Generics
10. Attributes
11. Event
12. Stream File
13. GUI
14. GUI Applications
15. 2D Graphics
16. I18N Internationlization
17. Reflection
18. Regular Expressions
19. Security
20. Socket Network
21. Thread
22. Windows
23. XML
24. Database ADO.net
25. Design Patterns
Microsoft Office Word 2007 Tutorial
Java
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
PHP
Python
SQL Server / T-SQL
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial » GUI Applications » Chart 
14. 4. 2. Char CPU and Memory
Char CPU and Memory
 

'Sams Teach Yourself Visual Basic .NET in 21 Days
'By Lowell Mauer
'Published 2001
'Sams Publishing
'ISBN 0672322714



Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Drawing2D

public class CharCPUMemory
   public Shared Sub Main
        Application.Run(New frmMain)
   End Sub
End class


Public Class frmMain
    Inherits System.Windows.Forms.Form
    Dim m_sngX As Single
    Dim m_sngY As Single

    Dim m_sngCPUY As Single
    Dim m_sngProcsY As Single
    Dim m_sngMemY As Single

    Dim penCPU As New System.Drawing.Pen(Color.Red)
    Dim penProcs As New System.Drawing.Pen(Color.Green)
    Dim penMem As New System.Drawing.Pen(Color.Blue)
    Dim penFore As New System.Drawing.Pen(SystemColors.WindowText)
    Dim penBack As New System.Drawing.Pen(SystemColors.Control)

    Dim MachineName As String = System.Windows.Forms.SystemInformation.ComputerName
    Const INCREMENT As Single = 1

#Region " Windows Form Designer generated code "

    Public Sub New()
        MyBase.New()

        'This call is required by the Windows Form Designer.
        InitializeComponent()

        'Add any initialization after the InitializeComponent() call

    End Sub

    'Form overrides dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is NothingThen
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub
    Friend WithEvents pnlSweep As System.Windows.Forms.Panel
    Friend WithEvents cmdSweep As System.Windows.Forms.Button
    Friend WithEvents trkSpeed As System.Windows.Forms.TrackBar
    Friend WithEvents lblCPU As System.Windows.Forms.Label
    Friend WithEvents lblProc As System.Windows.Forms.Label
    Friend WithEvents lblMem As System.Windows.Forms.Label
    Friend WithEvents tmrClock As System.Windows.Forms.Timer
#Region "Declaration of Performance counters"
    Friend WithEvents prfCPU As System.Diagnostics.PerformanceCounter
    Friend WithEvents prfProcs As System.Diagnostics.PerformanceCounter
    Friend WithEvents prfMem As System.Diagnostics.PerformanceCounter
#End Region

    Friend WithEvents logApp As System.Diagnostics.EventLog
    Private components As System.ComponentModel.IContainer

    'Required by the Windows Form Designer

    'NOTE: The following procedure is required by the Windows Form Designer
    'It can be modified using the Windows Form Designer.  
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container()
        Me.prfCPU = New System.Diagnostics.PerformanceCounter()
        Me.pnlSweep = New System.Windows.Forms.Panel()
        Me.tmrClock = New System.Windows.Forms.Timer(Me.components)
        Me.trkSpeed = New System.Windows.Forms.TrackBar()
        Me.lblProc = New System.Windows.Forms.Label()
        Me.prfProcs = New System.Diagnostics.PerformanceCounter()
        Me.lblMem = New System.Windows.Forms.Label()
        Me.prfMem = New System.Diagnostics.PerformanceCounter()
        Me.lblCPU = New System.Windows.Forms.Label()
        Me.cmdSweep = New System.Windows.Forms.Button()
        Me.logApp = New System.Diagnostics.EventLog()
        CType(Me.prfCPU, System.ComponentModel.ISupportInitialize).BeginInit()
        CType(Me.trkSpeed, System.ComponentModel.ISupportInitialize).BeginInit()
        CType(Me.prfProcs, System.ComponentModel.ISupportInitialize).BeginInit()
        CType(Me.prfMem, System.ComponentModel.ISupportInitialize).BeginInit()
        CType(Me.logApp, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()

        '***Initializing Performance Counters"
        '
        'prfCPU
        '
        Me.prfCPU.CategoryName = "Processor"
        Me.prfCPU.CounterName = "% Processor Time"
        Me.prfCPU.InstanceName = "_Total"
        Me.prfCPU.MachineName = MachineName
        '
        'prfProcs
        '
        Me.prfProcs.CategoryName = "System"
        Me.prfProcs.CounterName = "Processes"
        Me.prfProcs.MachineName = MachineName
        '
        'prfMem
        '
        Me.prfMem.CategoryName = "Memory"
        Me.prfMem.CounterName = "Committed Bytes"
        Me.prfMem.MachineName = MachineName

        '
        'pnlSweep
        '
        Me.pnlSweep.Dock = System.Windows.Forms.DockStyle.Top
        Me.pnlSweep.Name = "pnlSweep"
        Me.pnlSweep.Size = New System.Drawing.Size(472, 240)
        Me.pnlSweep.TabIndex = 0
        '
        'tmrClock
        '
        Me.tmrClock.Interval = 1000
        '
        'trkSpeed
        '
        Me.trkSpeed.Location = New System.Drawing.Point(8, 280)
        Me.trkSpeed.Maximum = 20
        Me.trkSpeed.Minimum = 1
        Me.trkSpeed.Name = "trkSpeed"
        Me.trkSpeed.TabIndex = 2
        Me.trkSpeed.Value = 10
        '
        'lblProc
        '
        Me.lblProc.AutoSize = True
        Me.lblProc.ForeColor = System.Drawing.Color.Green
        Me.lblProc.Location = New System.Drawing.Point(240, 272)
        Me.lblProc.Name = "lblProc"
        Me.lblProc.Size = New System.Drawing.Size(60, 13)
        Me.lblProc.TabIndex = 3
        Me.lblProc.Text = "Processes:"
        '
        'lblMem
        '
        Me.lblMem.AutoSize = True
        Me.lblMem.ForeColor = System.Drawing.Color.Blue
        Me.lblMem.Location = New System.Drawing.Point(240, 296)
        Me.lblMem.Name = "lblMem"
        Me.lblMem.Size = New System.Drawing.Size(48, 13)
        Me.lblMem.TabIndex = 3
        Me.lblMem.Text = "Memory:"
        '
        'lblCPU
        '
        Me.lblCPU.AutoSize = True
        Me.lblCPU.ForeColor = System.Drawing.Color.Red
        Me.lblCPU.Location = New System.Drawing.Point(240, 248)
        Me.lblCPU.Name = "lblCPU"
        Me.lblCPU.Size = New System.Drawing.Size(31, 13)
        Me.lblCPU.TabIndex = 3
        Me.lblCPU.Text = "CPU:"
        '
        'cmdSweep
        '
        Me.cmdSweep.Location = New System.Drawing.Point(8, 248)
        Me.cmdSweep.Name = "cmdSweep"
        Me.cmdSweep.Size = New System.Drawing.Size(64, 24)
        Me.cmdSweep.TabIndex = 1
        Me.cmdSweep.Text = "&Start"
        '
        'logApp
        '
        Me.logApp.Log = "Application"
        Me.logApp.MachineName = MachineName
        Me.logApp.Source = "PerfLite"
        Me.logApp.SynchronizingObject = Me
        '
        'frmMain
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(472, 333)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.lblCPU, Me.trkSpeed, Me.cmdSweep, Me.pnlSweep, Me.lblProc, Me.lblMem})
        Me.Name = "frmMain"
        Me.Text = "PerfLite"
        CType(Me.prfCPU, System.ComponentModel.ISupportInitialize).EndInit()
        CType(Me.trkSpeed, System.ComponentModel.ISupportInitialize).EndInit()
        CType(Me.prfProcs, System.ComponentModel.ISupportInitialize).EndInit()
        CType(Me.prfMem, System.ComponentModel.ISupportInitialize).EndInit()
        CType(Me.logApp, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

#End Region

    Private Sub tmrClock_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrClock.Tick
        Dim sngCPU As Single = prfCPU.NextValue() / 100
        Dim sngProcs As Single = prfProcs.NextValue()
        Dim sngMem As Single = prfMem.NextValue / 1024
        'draw the sweep panel
        DrawSweep(sngCPU, sngProcs, sngMem)
        'update the labels
        lblCPU.Text = "CPU: " & sngCPU.ToString("p")
        lblProc.Text = "Processes: " & sngProcs
        lblMem.Text = "Memory: " & sngMem.ToString("f0") & "KB"
    End Sub

    Private Sub DrawSweep(ByVal CPU As Single, _
        ByVal Processes As Single, _
        ByVal Memory As Single)
        Dim oGrafix As Graphics = pnlSweep.CreateGraphics()
        Dim sngHeight As Single = pnlSweep.Height
        'for the points
        Dim sngCPUY As Single
        Dim sngProcsY As Single
        Dim sngMemY As Single
        'erase previous sweep line
        oGrafix.DrawLine(penBack, m_sngX, 0, m_sngX, sngHeight)
        'draw data points
        sngCPUY = sngHeight - (CPU * sngHeight) - 1
        oGrafix.DrawLine(penCPU, _
            m_sngX - INCREMENT, m_sngCPUY, m_sngX, sngCPUY)
        m_sngCPUY = sngCPUY
        sngProcsY = sngHeight - Processes
        oGrafix.DrawLine(penProcs, _
            m_sngX - INCREMENT, m_sngProcsY, m_sngX, sngProcsY)
        m_sngProcsY = sngProcsY
        'the 10000 is for my machine, to get the memory to a nice value
        '   you may need to change it if the memory line
        '   isn't drawing correctly
        sngMemY = sngHeight - (Memory / 10000)
        oGrafix.DrawLine(penMem, _
            m_sngX - INCREMENT, m_sngMemY, m_sngX, sngMemY)
        m_sngMemY = sngMemY
        'increment x
        m_sngX += INCREMENT
        If m_sngX > pnlSweep.Width Then
            'reset back to start
            m_sngX = 0
            'and clear the drawing surface
            oGrafix.Clear(SystemColors.Control)
        End If
        'draw new line
        oGrafix.DrawLine(penFore, m_sngX, 0, m_sngX, sngHeight)
    End Sub

    Private Sub cmdSweep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSweep.Click
        'Toggle the button text and timer (on or off)
        If cmdSweep.Text = "&Start" Then
            cmdSweep.Text = "&Stop"
            tmrClock.Enabled = True
        Else
            cmdSweep.Text = "&Start"
            tmrClock.Enabled = False
        End If
    End Sub

    Private Sub trkSpeed_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trkSpeed.Scroll
        Dim iValue As Integer
        iValue = CInt(trkSpeed.Value)
        'set the timer interval to the selected time
        tmrClock.Interval = iValue * 100 'ms
    End Sub
End Class

        
14. 4. Chart
14. 4. 1. Custom ChartCustom Chart
14. 4. 2. Char CPU and MemoryChar CPU and Memory
14. 4. 3. Performance Monitor
14. 4. 4. GDI+ Line ChartGDI+ Line Chart
14. 4. 5. Thread GraphThread Graph
ww___w__.___j__a__v_a2s__._c__o_m___ | Contact Us
Copyright 2003 - 08 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.