Visual Basic Interface

Sabtu, 24 Oktober 2009

ThreadGraph Dynamic Line Visual Basic 2008

Tips kali ini kita akan membuat Prosedur Thread untuk membuat Grafik Dynamic Line pada PictureBox dengan menggunakan Visual Basic 2008.Hasilnya seperti gambar di bawah ini:


thread2


Ikuti langkah-langkah di bawah ini. Sekarang perhatikan tabel ToolBox yang akan digunakan antaralain:


thread4


Rancang/design seperti gambar dibawah ini, lalu Save All dengan nama ThreadGraph.


thread


Setelah itu arahkan kursor Anda pada jendela Solution Explorer , Klik kanan Pada ThreadGraph kemudian Anda pilih Add kemudian pilih Class. Perhatikan gambar di bawah ini.


thread6


Setelah itu akan muncul jendela seperti Add New Item. Ganti nama Class1.vb menjadi ThreadGraph. Tekan Add. Perhatikan gambar di bawah ini:


thread5


Pada jendela arahkan kursor Anda ke Solution Explorer pada ThreadGraph.vb klik kanan pilih View Code . Ketikkan listing program sebagai berikut:


Public Class ThreadGraph

Public Shared Sub Main()

Application.Run(New Form1)

End Sub

End Class

Arahkan kursor Anda pada Design Form1, Klik kanan pilih View Code. Ketikkan listing program sebagai berikut:



Imports System.Drawing

Imports System.Windows.Forms

Imports System.Math

Imports System.Threading


Public Class Form1

Private m_Ymid As Integer

Private m_Y As Integer

Private Const GRID_STEP As Integer = 40

Private m_GraphThread As Thread


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

m_Ymid = picGraph.ClientSize.Height ’ 2

m_Y = m_Ymid

REM membuat objek grafik

Dim wid As Integer = picGraph.ClientSize.Width

Dim hgt As Integer = picGraph.ClientSize.Height

Dim bm As New Bitmap(wid, hgt)

Dim gr As Graphics = Graphics.FromImage(bm)



REM menggambar/ membentuk pola garis

gr.Clear(Color.Black)



For i As Integer = m_Ymid To picGraph.ClientSize.Height Step GRID_STEP

gr.DrawLine(Pens.GreenYellow, 0, i, wid - 1, i)

Next i

For i As Integer = m_Ymid To 0 Step -GRID_STEP

gr.DrawLine(Pens.GreenYellow, 0, i, wid - 1, i)

Next i

picGraph.Image = bm

End Sub

Private Sub btnGraph_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGraph.Click

If m_GraphThread Is Nothing Then

REM Keadaan fungsi/ prosedur thread. Indikasi ketika di mulai

AddStatus("Starting V. Hutabalian’S Blog"

m_GraphThread = New Thread(AddressOf DrawGraph)

m_GraphThread.Priority = ThreadPriority.BelowNormal

m_GraphThread.IsBackground = True

m_GraphThread.Start()

AddStatus("Dynamic Line Start"

btnGraph.Text = "Stop"

Else

REM fungsi/Prosedur thread pada saat berjalan kemudian berhenti diindikasikan

AddStatus("Stopping V. Hutabalian’S Blog"

m_GraphThread.Abort()

m_GraphThread = Nothing

AddStatus("Dynamic Line stopped"

btnGraph.Text = "Start"

End If

End Sub

Private Sub DrawGraph()

Try

REM ambil nilai random

Dim y As Integer = m_Y

Do

REM ambil nilai random selanjutnya

NewValue()

REM plot nilai random

PlotValue(y, m_Y)

y = m_Y

Loop

Catch ex As Exception

AddStatus("[Thread] " & ex.Message)

End Try

End Sub

Private Delegate Sub PlotValueDelegate(ByVal old_y As Integer, ByVal new_y As Integer

Private Sub PlotValue(ByVal old_y As Integer, ByVal new_y As Integer

REM tampilan grafik garis data random pada prosedur thread

If Me.InvokeRequired Then

REM tampilan plot nilai random lama dan baru

Dim args As Object() = {old_y, new_y}

Dim plot_value_delegate As PlotValueDelegate

plot_value_delegate = AddressOf PlotValue

Me.Invoke(plot_value_delegate, args)

Exit Sub

End If

REM tampilkan bentuk grafik

Dim wid As Integer = picGraph.ClientSize.Width

Dim hgt As Integer = picGraph.ClientSize.Height

Dim bm As New Bitmap(wid, hgt)

Dim gr As Graphics = Graphics.FromImage(bm)

REM geser data nilai random

gr.DrawImage(picGraph.Image, -1, 0)

REM update grafik ditepi sebelah kanan dengan nilai random yang baru

gr.DrawLine(Pens.Black, wid - 1, 0, wid - 1, hgt - 1)

For i As Integer = m_Ymid To picGraph.ClientSize.Height Step GRID_STEP

gr.DrawLine(Pens.GreenYellow, wid - 2, i, wid - 1, i)

Next i

For i As Integer = m_Ymid To 0 Step -GRID_STEP

gr.DrawLine(Pens.GreenYellow, wid - 2, i, wid - 1, i)

Next i

REM Plot pixel grafik garis baru

gr.DrawLine(Pens.LightGreen, wid - 5, old_y, wid - 5, new_y)

REM tampilkan

picGraph.Image = bm

picGraph.Refresh()

gr.Dispose()

End Sub

Private Sub NewValue()

REM berikan jedah waktu setiap pengambilan nilai

Dim stop_time As Date = Now.AddMilliseconds(20)

Do While Now < stop_time

Loop

REM ambil nilai random yang baru

Static rnd As New Random

m_Y += rnd.Next(-4, 5)

If m_Y < 0 Then m_Y = 0

If m_Y >= picGraph.ClientSize.Height - 1 Then m_Y = picGraph.ClientSize.Height - 1

End Sub

REM berikan konfirmasi

Private Delegate Sub AddStatusDelegate(ByVal txt As String

Private Sub AddStatus(ByVal txt As String

If Me.InvokeRequired Then

Dim args As Object() = {txt}

Dim add_status_delegate As AddStatusDelegate

add_status_delegate = AddressOf AddStatus

Me.Invoke(add_status_delegate, args)

Exit Sub

End If

txtStatus.Text &= vbCrLf & txt

txtStatus.Select(txtStatus.Text.Length, 0)

txtStatus.ScrollToCaret()

End Sub

Private Sub tmrUpdateClock_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrUpdateClock.Tick

lblTime.Text = Now.ToString("T"

End Sub

End Class

Setelah itu tekan F5, maka akan muncul tampilan seperti gambar berikut ini.

thread1

Tekan Button Start, maka akan tampil seperti gambar di bawah ini.

thread2

Tekan Button Stop, maka akan tampil seperti gambar di bawah ini.

thread3

Selamat mencoba Guys! Nantikan Tips Aplikasi Cantik Lainnya by Verynandus Hutabalian.

3 komentar:

IndahMulyana mengatakan...

hi V. Hutabalian

terima kasi buat ilmu na

ada ingin saya tanyakan?

ThreadGraph Dynamic Line ini bisa di buat ke VB 6.0 juga ga?

mohon pencerahan na :)

terimakasi

IndahMulyana mengatakan...

hi V. Hutabalian

nice info :)

saya pemula di vb dan masi banyak belajar ttg vb

saya mw bertanya, ini threadgraph dynamic line na, bisa di aplikasi kan ke vb 6.0??

mohon pencerahan na :)

V. Hutabalian mengatakan...

Hai Indah.....
Walaupun saya membuat di VB.Net tapi aplikasi ini bisa diterapkan di VB 6.0, tapi mungkin ada perubahan sintaks programnya.. tapi secara garis besar hampir sama ketika kita mengnggunakannya di PlatForn VB 6.0

Dunia Science Terkini

  1. Untaian Genom Dalam 3D
  2. Robot Pelompat
  3. Burung Pertama Bukan Burung
  4. Cincin Terbesar Planet Saturnus
  5. Miliarder Kanada Kembali Dari Luar Angkas
  6. Asteroid Terbesar Kedua di Bimasakti
  7. 32 Planet Terbaru
  8. Planet Terbaru Mengandung Molekul Organik
  9. Tuak Sebagai Energi Alternatif
10. Cumi-Cumi Raksasa Teluk Meksiko
11. Fosil Gajah Purba Teridentifikasi
12. "Ardi" Nenek Moyang Pertama Manusia
13. Konserfasi Gading Gajah Purba Sembarangan
14. Jejak Dinosaurus Terbesar
15. Apakah Manusia Berevolusi
16. Fondasi Kuno 1300 Tahun Lalu Ditemukan
17. Fosil Telur Dinosaurus India
18. Pecahan Keramik Abad XII
19. Penemuan Terbaru Putra Indonesia
20. Udang Tanpa Mata
21. Menguak Misteri Si Raja Laut
22. Goa Terbesar Di Dunia
23. Nobel Fisika Diraih 3 Ilmuan AS
24. Tiga Peneliti Ribosom Raih Nobel
25. Kemungkinan Asteroid Menabrak Bumi
26. 24 Pulau Indonesia Hilang
27. 50 Perusahaan Kategori Hitam
28. Anak SMP Pencipta Antivirus
29. Apakah Manusia Berevolusi
30. Ida, Potongan Jejak Evolusi Primata
31. Nasa Sukses Uju Coba Protipe Ares I-X
32. Monster Laut Inggris Lebih Garang dari T-Rex
33. Ledakan Bone Adalah Asteroid Jatuh
34. Ledakan Meteor Di Bone Lampui Bom Atom
35. Dinosaurus Lapis Baja Ditemukan
36. Retakan Besar di Afrika Bakal Menjadi Samudera Baru
37. Batu Megalitikum Usia Ribuan Tahun
38. Jejak Kaki Dinosaurus Di Selandia Baru
39. Kudus Lacak Tengkorak Homo Erectus
40. Fosil Spesies Baru Dinosaurus Jurassic
41. Di Indonesia Peningkatan Kasus AIDS 8 Kali Lipat
42. 270 Ribu Penduduk Tertular HIV/AIDS
43. Awas, Operasi Permak Miss V tak Aman
44. Manfaat Rokok Hanyalah Sugesti dan Mitos
45. Teknik Pembenaman Karbon Dikaji
46. 2012, Matahari dan Bosscha
47. Bunga Bangkai Raksasa Mekar di Mekarsari
48. Fosil Kepala Gajah Purba Seberat 1 Kuintal
49. Menelusuri Jejak Lava Gunung Pra-Sunda
50. Legenda "Pengisap Darah" Chupacabra
51. Adanya Harapan Kanker Bisa Diobati
52. Sedot Lemak Menggunakan Gelombang Radio
53. NASA Persiapkan Atlantis untuk Misi ke ISS
54. 25 Galon Air Muncrat dari Permukaan Bulan
55. Peluncuran Pesawat Ulang Alik Atlantis
56. Sebuah Sumur Kerajaan Mataram Kuno
57. Seekor Anak Ikan Purba Terekam Kamera
58. Buaya Purba Bergigi Babi Hutan, Tikus & Moncong Lebar
59. Kemungkinan Penyakit Menjangkit di Bulan Desember
60. Kafan Yesus, Tubuh Dalam Kafan Melayang
61. Misteri Berkas Tulisan Kain Kafan Yesus
62. Jemari dan Gigi dari Jenazah Galileo Galilei
63. Ribuan Makhluk Aneh Di Dasar Samudera
64. Akademisi Memperingati 150 Tahun Karya Darwin
65. Peningkatan Tertinggi Gas Rumah Kaca 2008
66. Pemanasan Global Lebih Buruk Dari Perkiraan
67. Ternyata, Kulit Bisa Mendengar
68. Makin Berlemak, Makin Sulit Berhenti Makan
69. Atlantis Menunju Bumi
70. Otak Besar, Tidak Berarti Lebih Pintar
71. 10 Ramalan Kiamat Terbukti Meleset
72. Mesin Big Bang Selidiki Misteri Alam Semesta
73. Ternyata Alien Sudah Membaur Di Bumi
74. Sejarah di Balik Legenda Vampir
75. Pesawat Ulang Alik Atlatis Mendarat Mulus
76. Perjalanan Panjang HIV/AIDS
77. Wah... Setiap Hari Ada 7.400 Kasus Baru HIV!
78. Tim Vertebrata Lanjutkan Penelitian Gajah Purba
79. Wah... Setiap Hari Ada 7.400 Kasus Baru HIV!
80. Kesepian Menular Seperti Virus
81. Militer Inggris Tutup Kuping soal UFO
82. Objek Misterius Dekat Bintang Mirip Matahari
83. Virgin Galactic Kenalkan SpaceShipTwo
84. Tetap Internetan Saat Penerbangan
85. Jepang Luncurkan Satelit Pengintai Kelima
86. Robot Kerang Bisa Ledakkan Tambang di Bawah Air
87. Mahasiswa Matematika Juarai Kompetisi "Hacker"
88. UFO di Sayap Pesawat Lion Air
89. Lima Benda Purbakala Ditemukan di Desa Tanjungsari
90. Afrika Asal Usul Suku Bangsa Asia
91. Kembaranku Robot
92. Pertikaian Microsoft Vs Uni Eropa Berakhir
93. Kopi Tunda Alzheimer Parah
94. Gen Penyebab Alzheimer Berhasil Ditemukan
95. Ada Kaitan Alzheimer dengan Hormon Nafsu Makan
96. Ditemukan Planet Serupa Bumi yang Memiliki Air