Visual Basic Interface

Kamis, 06 Mei 2010

INPUT LISTBOX Vs PLOTTING (X,Y) Vs PICTUREBOX


Tertanggal 4-Mei-2010, Salah satu pengunjung Blog saya menanyakan bagaimana membuat Chart menggunakan VB 2008 dengan masukan dari 2 Data X dan Y yang di masukkan ke Listbox. Saya berharap aplikasi yang saya buat dapat memvisualisasikan pertanyaannya, dan membantu masalah yang dihadapinya.

Hasil tampilannya, perhatikan gambar paling atas. ToolBox yang akan kita gunakan, perhatikan table di bawah ini:

ToolBox
Properties
1 UserFormName: UserForm1
Caption: V. Hutabalian's Blog INPUT LISTBOX Vs PLOTTING (X,Y) Vs PICTUREBOX
2 CommandButton
Name:CommandButton 1-2
Caption CommandButton 1:Entry Data
Caption CommandButton 2:View Grafik
3 ListBoxName:ListBox 1-3
1 PictureBoxName:PBLineChart
4 LabelName: Label 1-4
Caption Label1: Data X
Caption Label2: Data Y
Caption Label3: Inputkan Data
Caption Label4: Pilih Posisi Coordinat Data
1 TextBoxName: TextBox1


Desain Form dari ToolBox di atas perhatikan gambar di bawah ini.



Setelah Anda mendesain Form di atas dengan mengatur setiap properties yang di miliki oleh setiap object ToolBox. Ketikkan source program di bawah ini dengan mengarahkan kursor pada design Form, Klik kanan lalu pilih View Code.
Source Program:


'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'
' V. Hutabalian's Blog INPUT LISTBOX Vs PLOTTING (X,Y) Vs PICTUREBOX '
'======================================================================='
' Entry Data Pada ListBox dengan 2 masukan X dan Y '
' Berbagi ilmu Sensasi Kepuasan Tersendiri '
' Programming by: Verynandus Hutabalian '
' Publish to V. Hutabalian's Blog 7 Mei 2010 '
'+++++++++++++++++++++++========================++++++++++++++++++++++++'
Imports System.Drawing.Drawing2D
Public Class Form1
Dim LeftMargin As Integer = 35
Dim RightMargin As Integer = 15
Dim BaseMargin As Integer = 35
Dim TopMargin As Integer = 10
Dim VertLineLength As Integer
Dim BaseLineLength As Integer
Dim LineWidth As Double
Dim g As Graphics
Dim bmap As Bitmap
Private Sub TextBox1_Validated(ByVal sender As Object, ByVal e As System.EventArgs)
If IsNumeric(TextBox1.Text) = False Then
MsgBox("Harus Karakter Angaka", MsgBoxStyle.Exclamation)

End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ListBox3.Text = "" Then
MsgBox("Pilih Data Yang Terlebih dulu di Inputkan", MsgBoxStyle.Exclamation)

End If
If ListBox3.Text = "Data X" Then
If TextBox1.Text = "" Then
MsgBox("Masukkan Data X")
Else
ListBox1.Items.Add(TextBox1.Text)
TextBox1.Focus()
End If

End If
If ListBox3.Text = "Data Y" Then
If TextBox1.Text = "" Then
MsgBox("Masukkan Data Y")
Else
ListBox2.Items.Add(TextBox1.Text)
TextBox1.Focus()
End If
End If

End Sub


Private Sub DrawOutline()
bmap = New Bitmap(PBLineChart.Width, PBLineChart.Height, PBLineChart.CreateGraphics)
g = Graphics.FromImage(bmap)
Dim StartPoint As New Point(LeftMargin, PBLineChart.Height - BaseMargin)
Dim EndPoint As New Point(LeftMargin, TopMargin)
Dim LinePen As New Pen(Color.Red, 2)
g.DrawLine(LinePen, StartPoint, EndPoint)
Dim VertLineLength As Integer = PBLineChart.Height - (BaseMargin + TopMargin)
Dim VertGap As Integer = CInt(VertLineLength / 10)
Dim TickSP As New Point(LeftMargin - 5, StartPoint.Y - VertGap)
Dim TickEP As New Point(LeftMargin, StartPoint.Y - VertGap)
Dim ValueFont As New Font("Arial", 8, FontStyle.Regular)
For i As Integer = 1 To 10
g.DrawLine(New Pen(Color.Black), TickSP, TickEP)
g.DrawString(CStr(i * 10), ValueFont, Brushes.Red, 2, TickSP.Y - 5)
TickSP.Y -= VertGap
TickEP.Y -= VertGap
Next
g.DrawLine(LinePen, LeftMargin, PBLineChart.Height - BaseMargin, PBLineChart.Width - RightMargin, PBLineChart.Height - BaseMargin)
End Sub
Private Sub btnDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDraw.Click
DrawOutline()
DrawHorizontalLines()
DrawVerticalGridLines()
DrawTheLine()
ShowMonths()
FinalDisplay()
End Sub
Private Sub DrawTheLine()
Dim MyPath As New GraphicsPath
Dim MyPen As Pen = New Pen(Color.Blue, 3)
g.DrawPath(MyPen, MyPath)
Dim VertScale As Double
Dim VertLineLength As Integer = PBLineChart.Height - (BaseMargin + TopMargin)
Dim XPosStart As Integer = CInt(LeftMargin + 30)
VertScale = VertLineLength / 100

Dim XPosEnd As Integer = CInt(XPosStart + LineWidth)

Dim s(ListBox2.Items.Count) As String
Dim al As New ArrayList

ListBox2.Items.CopyTo(s, 0)

al = New ArrayList(s)

Me.ListBox2.DataSource = al
Dim YPosStart As Integer = CInt(s(0) * VertScale)
Dim YPosEnd As Integer = CInt(s(1) * VertScale)
MyPath.AddEllipse(XPosStart - 2, YPosStart - 2, 4, 4)
MyPath.AddLine(XPosStart, YPosStart, XPosEnd, YPosEnd)
For i As Integer = 1 To UBound(s) - 2
XPosStart = XPosEnd
XPosEnd = CInt(XPosStart + LineWidth)
YPosStart = YPosEnd
YPosEnd = CInt(s(i + 1) * VertScale)

MyPath.AddEllipse(XPosStart - 2, YPosStart - 2, 4, 4)
MyPath.AddLine(XPosStart, YPosStart, XPosEnd, YPosEnd)
Next


MyPath.AddEllipse(XPosEnd - 2, YPosEnd - 2, 4, 4)
g.RotateTransform(180)
g.ScaleTransform(-1, 1)
g.TranslateTransform(0, VertLineLength + 10, MatrixOrder.Append)
g.DrawPath(MyPen, MyPath)
g.ResetTransform()
End Sub
Private Sub FinalDisplay()
PBLineChart.Image = bmap
g.Dispose()
End Sub
Private Sub ShowMonths()
Dim TextStartX As Integer = CInt(LeftMargin + 18)
Dim TextBrsh As Brush = New SolidBrush(Color.Red)
Dim TextFont As New Font("Arial", 10, FontStyle.Regular)
Dim s1(ListBox1.Items.Count) As String
Dim a2 As New ArrayList

ListBox1.Items.CopyTo(s1, 0)

a2 = New ArrayList(s1)

Me.ListBox1.DataSource = a2

For i As Integer = 1 To s1.Length- 1

g.DrawString(s1(i - 1), TextFont, TextBrsh, TextStartX, _
CInt(PBLineChart.Height - (BaseMargin - 4)))
TextStartX += CInt(LineWidth)
Next
End Sub
Private Sub DrawVerticalGridLines()

Dim ThinPen As New Pen(Color.LightGreen, 2)
Dim StartPoint As New Point(LeftMargin, PBLineChart.Height - BaseMargin)
Dim EndPoint As New Point(LeftMargin, TopMargin)
Dim LinePen As New Pen(Color.Red, 2)
Dim s(ListBox2.Items.Count) As String
Dim s1(ListBox1.Items.Count) As String

Dim al As New ArrayList
Dim a2 As New ArrayList

ListBox2.Items.CopyTo(s, 0)
ListBox1.Items.CopyTo(s1, 0)

al = New ArrayList(s)
a2 = New ArrayList(s1)
Me.ListBox2.DataSource = al
Me.ListBox1.DataSource = a2


g.DrawLine(LinePen, StartPoint, EndPoint)
BaseLineLength = PBLineChart.Width - (LeftMargin + RightMargin)
LineWidth = (BaseLineLength / s.Length - 1)
Dim LineStartX As Integer = CInt(LeftMargin + 30)
For i As Integer = 1 To s1.Length - 1
g.DrawLine(ThinPen, LineStartX, TopMargin, LineStartX, PBLineChart.Height - (BaseMargin + 4))
LineStartX += CInt(LineWidth)
Next
ThinPen.Dispose()
End Sub
Private Sub DrawHorizontalLines()
Dim VertLineLength As Integer = PBLineChart.Height - (BaseMargin + TopMargin)
Dim VertGap As Integer = CInt(VertLineLength / 10)
Dim StartPoint As New Point(LeftMargin + 3, PBLineChart.Height - BaseMargin)
Dim EndPoint As New Point(PBLineChart.Width, PBLineChart.Height - BaseMargin)
Dim LineStart As New Point(StartPoint.X, StartPoint.Y - VertGap)
Dim LineEnd As New Point(EndPoint.X, StartPoint.Y - VertGap)
Dim ThinPen As New Pen(Color.LightGreen, 3)
For i As Integer = 1 To 10
g.DrawLine(ThinPen, LineStart, LineEnd)
LineStart.Y -= VertGap
LineEnd.Y -= VertGap
Next
ThinPen.Dispose()
End Sub

Private Sub PBLineChart_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PBLineChart.Paint
Dim ix As Integer = PBLineChart.Width
Dim iy As Integer = PBLineChart.Height
e.Graphics.DrawString("Coordinat-Y", New Font("Lucida Handwriting", 10, FontStyle.Regular), Brushes.Goldenrod, iy - 360, 6)
e.Graphics.DrawString("Coordinat-X", New Font("Lucida Handwriting", 10, FontStyle.Regular), Brushes.Goldenrod, iy + 20, 370)

e.Graphics.DrawString("V. HUTABALIAN'S Blog", New Font("Lucida Handwriting", 10, FontStyle.Regular), Brushes.Goldenrod, iy - 40, 6)
e.Graphics.DrawString("7 Mei 2010", New Font("Lucida Handwriting", 10, FontStyle.Regular), Brushes.Goldenrod, iy - 35, 20)


End Sub
End Class


Setelah Anda mengetikkan listing source program diatas tekan F5, maka hasil tampilan visualnya seperti gambar di bawah ini.


Entry Data di Coordinat Data X dan Y denga jumlah data yang sama, kemudian tekan tombol View Grafik tampilannya seperti gambar paling atas.

Artikel terkait mengenai Tips ini:
Grafik Dynamic Line Visual Basic 2008===>>Klik disini
ThreadGraph Dynamic Line Visual Basic 2008===>>Klik disini
Dynamic Line Plotting Data Random Visual Basic 2008===>>Klik disini
Grafik 2D PictureBox Visual Basic 2008===>>Klik disini

Aplikasi yang saya buat masih memiliki kelemahan antaralain:
1. Lebar grid pada Coordinat-X akan selalu sama, walaupun nantinya Anda menginput data dengan rentang yang berbeda-beda.
2. Data inputan pada Coordinat X tidak berurut dan akan di plotting pada pengulangan data yang sama.
3. Ketika Anda mengentery data yang baru, saya tidak menyediakan refresh pada Plotting grafik dan listbox sehingga Anda harus meng-close dan membuka kembali program untuk data entery baru.
4. Perlu pengembangan lebih lanjut dan saya berharap juga masukan dan kreasi dari teman-teman.

Walaupun aplikasi di atas memiliki beberapa kelemahan, namun aplikasi ini sudah dapat menunjukan bagaimana Plotting data pada Coordinat X terhadap Coordinat Y. Pengembangan lebih lanjut, disesuaikan dengan kebutuhan variasi data inputan Anda.

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

0 komentar:

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