Visual Basic Interface

Selasa, 20 Oktober 2009

Grafik 2D PictureBox VB 2008

Tips kali ini Grafik 2D menggunakan software Microsoft Visual Basic 2008 Express Edition. Perhatikan langkah-langkahnya sebagai berikut:


graf2D1


ToolBox yang digunakan perhatikan tabel di bawah ini:


img2


Perancangan/Design antar mukanya, perhatikan gambar di bawah ini:


graf2D2


Klik kanan pada Design, lalu pilih View Code isikan Source program seperti di bawah ini:


OptionStrictOn

Imports System.Drawing.Drawing2D


PublicClass Form1
REM Data Grafik yang akan di plot
Dim Months() AsString = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", _ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}
Dim Sales() AsInteger = {0, 314, 672, 429, 715, 642, 153, 699, 622, 901, 345, 655}
Dim LeftMargin AsInteger = 35
’ # of Pixels left unused at right side of PicBox
Dim RightMargin AsInteger = 15
’ # of pixels above base of picturebox the X-Axis is placed
Dim BaseMargin AsInteger = 35
’ Margin at Top
Dim TopMargin AsInteger = 10
’ Variable to hold length of vertical axis
Dim VertLineLength AsInteger
’ Variable to hold length of horizontal axis
Dim BaseLineLength AsInteger
’ Variable to store length of each line segment
Dim LineWidth AsDouble
Dim g As Graphics
’ Next, create a Bitmap object which is
’ the same size and resolution as the PictureBox
Dim bmap As Bitmap

PrivateSub DrawOutline()
bmap = New Bitmap(PBLineChart.Width, PBLineChart.Height, PBLineChart.CreateGraphics)
’ Assign the Bitmap to the Graphics object.
g = Graphics.FromImage(bmap)
Dim StartPoint AsNew Point(LeftMargin, PBLineChart.Height - BaseMargin)
Dim EndPoint AsNew Point(LeftMargin, TopMargin)
’ Basic Pen to draw outline lines
Dim LinePen AsNew Pen(Color.Red, 2)
’ Draw the vertical line
g.DrawLine(LinePen, StartPoint, EndPoint)
Dim VertLineLength AsInteger = PBLineChart.Height - (BaseMargin + TopMargin)
Dim VertGap AsInteger = CInt(VertLineLength / 10)
Dim TickSP AsNew Point(LeftMargin - 5, StartPoint.Y - VertGap)
Dim TickEP AsNew Point(LeftMargin, StartPoint.Y - VertGap)
Dim ValueFont AsNew Font("Arial", 8, FontStyle.Regular)
For i AsInteger = 1 To 10
’ Tick mark
g.DrawLine(New Pen(Color.Black), TickSP, TickEP)
’ Tick Values as text
g.DrawString(CStr(i * 100), ValueFont, Brushes.Red, 2, TickSP.Y - 5) ’ Reset y positions, moving 10% up vertical line
TickSP.Y -= VertGap
TickEP.Y -= VertGap
Next
g.DrawLine(LinePen, LeftMargin, PBLineChart.Height - BaseMargin, PBLineChart.Width - RightMargin, PBLineChart.Height - BaseMargin)
EndSub

PrivateSub btnDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDraw.Click
DrawOutline()
DrawHorizontalLines()
DrawVerticalGridLines()
DrawTheLine()
ShowMonths()
FinalDisplay()
EndSub

PrivateSub DrawTheLine()
Dim MyPath AsNew GraphicsPath
Dim MyPen As Pen = New Pen(Color.Blue, 3)
g.DrawPath(MyPen, MyPath)
Dim VertScale AsDouble
Dim VertLineLength AsInteger = PBLineChart.Height - (BaseMargin + TopMargin)
’Dim MyPath As New GraphicsPath
Dim XPosStart AsInteger = CInt(LeftMargin + 30)
VertScale = VertLineLength / 1000
Dim XPosEnd AsInteger = CInt(XPosStart + LineWidth)
Dim YPosStart AsInteger = CInt(Sales(0) * VertScale)
Dim YPosEnd AsInteger = CInt(Sales(1) * VertScale)
’Dim MyPath As New GraphicsPath
’ Manually add the first circle to the path
MyPath.AddEllipse(XPosStart - 2, YPosStart - 2, 4, 4)
’ Manually add the first line to the Path
MyPath.AddLine(XPosStart, YPosStart, XPosEnd, YPosEnd)
’MyPath.AddRectangle(New Rectangle(XPosEnd - 2, YPosEnd - 2, 4, 4))
For i AsInteger = 1 To UBound(Sales) - 1
’ Update the X and Y positions for the next value:
’ Move start point one line width to the right
XPosStart = XPosEnd
’ Move end point one line width to the right
XPosEnd = CInt(XPosStart + LineWidth)
’ Assign YPosStart the ’old’ value of Y
YPosStart = YPosEnd
’ Assign YPosEnd the next the next scaled Sales figure
YPosEnd = CInt(Sales(i + 1) * VertScale)
’ Add next circle
MyPath.AddEllipse(XPosStart - 2, YPosStart - 2, 4, 4)
’ Add the next line segment to the GraphicsPath
MyPath.AddLine(XPosStart, YPosStart, XPosEnd, YPosEnd)
Next
’ Finally, manually add the last circle
MyPath.AddEllipse(XPosEnd - 2, YPosEnd - 2, 4, 4)
g.RotateTransform(180)
’ Because the rotation also moves the line out of view (to the left), so
’ we need to scale the x so that it is on the (plus) side of the
’ vertical axis.
’ The Y value remains unchanged, so a "scale" of 1 is used.
’ (i.e. no change made)
g.ScaleTransform(-1, 1)
’ Move the start point down to the bottom left corner
’ The X value remains the same
’ Y is shifted down to the end of the vertical axis, adjusted by
’ a fudge factor of 10 to compensate for the vertical scaling.
g.TranslateTransform(0, VertLineLength + 10, MatrixOrder.Append)
’Dim MyPen As Pen = New Pen(Color.Blue, 3)
g.DrawPath(MyPen, MyPath)
g.ResetTransform()
EndSub

PrivateSub FinalDisplay()
PBLineChart.Image = bmap
g.Dispose()
EndSub

PrivateSub ShowMonths()
’ Set the start point of the first string
Dim TextStartX AsInteger = CInt(LeftMargin + 18)
’ Create a Brush to draw the text
Dim TextBrsh As Brush = New SolidBrush(Color.Red)
’ Create a Font object instance for text display
Dim TextFont AsNew Font("Arial", 10, FontStyle.Regular)
For i AsInteger = 0 To Months.Length - 1
’ Draw the name of the onth
g.DrawString(Months(i), TextFont, TextBrsh, TextStartX, _
CInt(PBLineChart.Height - (BaseMargin - 4)))
’ Move start point for next name along to the right
TextStartX += CInt(LineWidth)
Next
EndSub

PrivateSub DrawVerticalGridLines()
Dim ThinPen AsNew Pen(Color.LightGreen, 2)
’Dim StartPoint As New Point(LeftMargin, PBLineChart.Height - BaseMargin)
’Dim EndPoint As New Point(LeftMargin, TopMargin)
Dim StartPoint AsNew Point(LeftMargin, PBLineChart.Height - BaseMargin)
Dim EndPoint AsNew Point(LeftMargin, TopMargin)
’Dim Sales() As Integer = {835, 314, 672, 429, 715, 642, 153, 699, 622, 901, 345, 655}
’ Basic Pen to draw outline lines
Dim LinePen AsNew Pen(Color.Red, 2)
’ Draw the vertical line
g.DrawLine(LinePen, StartPoint, EndPoint)
’ Calculate length of baseline drawn by the code above
BaseLineLength = PBLineChart.Width - (LeftMargin + RightMargin)
’ Calculate the width of each line segment
LineWidth = (BaseLineLength / Sales.Length)
’ Set the start point of the first string
Dim LineStartX AsInteger = CInt(LeftMargin + 30)
For i AsInteger = 0 To Months.Length - 1
g.DrawLine(ThinPen, LineStartX, TopMargin, LineStartX, PBLineChart.Height - (BaseMargin + 4))
’ Move start point along to the right
LineStartX += CInt(LineWidth)
Next
ThinPen.Dispose()
EndSub

PrivateSub DrawHorizontalLines()
’ Calculate vertically equal gaps
Dim VertLineLength AsInteger = PBLineChart.Height - (BaseMargin + TopMargin)
Dim VertGap AsInteger = CInt(VertLineLength / 10)
’ Set the Start and End points
’ = Left and right margins on the baseline
Dim StartPoint AsNew Point(LeftMargin + 3, PBLineChart.Height - BaseMargin)
Dim EndPoint AsNew Point(PBLineChart.Width, PBLineChart.Height - BaseMargin)
’ Initial settings
Dim LineStart AsNew Point(StartPoint.X, StartPoint.Y - VertGap)
Dim LineEnd AsNew Point(EndPoint.X, StartPoint.Y - VertGap)
Dim ThinPen AsNew Pen(Color.LightGreen, 3)
For i AsInteger = 1 To 10
’ Draw a line
g.DrawLine(ThinPen, LineStart, LineEnd)
’ Reset Start and End Y positions, moving up the vertical line
LineStart.Y -= VertGap
LineEnd.Y -= VertGap
Next
ThinPen.Dispose()
EndSub

PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
End
EndSub

EndClass

Dengan menekan F5 maka tampilannya seperti gambar di bawah ini:


graf2D


Untuk menampilkan Grafiknya tekan tombol Tampilkan (gambar pertama di atas) dan untuk menutup tekan Tutup.

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