Input Listbox vs Plotting (x,y)

Embed Size (px)

DESCRIPTION

pemrograman

Citation preview

'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'' 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.Drawing2DPublic Class Form1Dim LeftMargin As Integer = 35Dim RightMargin As Integer = 15Dim BaseMargin As Integer = 35Dim TopMargin As Integer = 10Dim VertLineLength As IntegerDim BaseLineLength As IntegerDim LineWidth As DoubleDim g As GraphicsDim bmap As BitmapPrivate Sub TextBox1_Validated(ByVal sender As Object, ByVal e As System.EventArgs)If IsNumeric(TextBox1.Text) = False ThenMsgBox("Harus Karakter Angaka", MsgBoxStyle.Exclamation)End IfEnd SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickIf ListBox3.Text = "" ThenMsgBox("Pilih Data Yang Terlebih dulu di Inputkan", MsgBoxStyle.Exclamation)End IfIf ListBox3.Text = "Data X" ThenIf TextBox1.Text = "" ThenMsgBox("Masukkan Data X")ElseListBox1.Items.Add(TextBox1.Text)TextBox1.Focus()End IfEnd IfIf ListBox3.Text = "Data Y" ThenIf TextBox1.Text = "" ThenMsgBox("Masukkan Data Y")ElseListBox2.Items.Add(TextBox1.Text)TextBox1.Focus()End IfEnd IfEnd SubPrivate 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 10g.DrawLine(New Pen(Color.Black), TickSP, TickEP)g.DrawString(CStr(i * 10), ValueFont, Brushes.Red, 2, TickSP.Y - 5)TickSP.Y -= VertGapTickEP.Y -= VertGapNextg.DrawLine(LinePen, LeftMargin, PBLineChart.Height - BaseMargin, PBLineChart.Width - RightMargin, PBLineChart.Height - BaseMargin)End SubPrivate Sub btnDraw_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDraw.ClickDrawOutline()DrawHorizontalLines()DrawVerticalGridLines()DrawTheLine()ShowMonths()FinalDisplay()End SubPrivate Sub DrawTheLine()Dim MyPath As New GraphicsPathDim MyPen As Pen = New Pen(Color.Blue, 3)g.DrawPath(MyPen, MyPath)Dim VertScale As DoubleDim VertLineLength As Integer = PBLineChart.Height - (BaseMargin + TopMargin)Dim XPosStart As Integer = CInt(LeftMargin + 30)VertScale = VertLineLength / 100Dim XPosEnd As Integer = CInt(XPosStart + LineWidth)Dim s(ListBox2.Items.Count) As StringDim al As New ArrayListListBox2.Items.CopyTo(s, 0)al = New ArrayList(s)Me.ListBox2.DataSource = alDim 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) - 2XPosStart = XPosEndXPosEnd = CInt(XPosStart + LineWidth)YPosStart = YPosEndYPosEnd = CInt(s(i + 1) * VertScale)MyPath.AddEllipse(XPosStart - 2, YPosStart - 2, 4, 4)MyPath.AddLine(XPosStart, YPosStart, XPosEnd, YPosEnd)NextMyPath.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 SubPrivate Sub FinalDisplay()PBLineChart.Image = bmapg.Dispose()End SubPrivate 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 StringDim a2 As New ArrayListListBox1.Items.CopyTo(s1, 0)a2 = New ArrayList(s1)Me.ListBox1.DataSource = a2For i As Integer = 1 To s1.Length- 1g.DrawString(s1(i - 1), TextFont, TextBrsh, TextStartX, _CInt(PBLineChart.Height - (BaseMargin - 4)))TextStartX += CInt(LineWidth)NextEnd SubPrivate 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 StringDim s1(ListBox1.Items.Count) As StringDim al As New ArrayListDim a2 As New ArrayListListBox2.Items.CopyTo(s, 0)ListBox1.Items.CopyTo(s1, 0)al = New ArrayList(s)a2 = New ArrayList(s1)Me.ListBox2.DataSource = alMe.ListBox1.DataSource = a2g.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 - 1g.DrawLine(ThinPen, LineStartX, TopMargin, LineStartX, PBLineChart.Height - (BaseMargin + 4))LineStartX += CInt(LineWidth)NextThinPen.Dispose()End SubPrivate 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 10g.DrawLine(ThinPen, LineStart, LineEnd)LineStart.Y -= VertGapLineEnd.Y -= VertGapNextThinPen.Dispose()End SubPrivate Sub PBLineChart_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PBLineChart.PaintDim ix As Integer = PBLineChart.WidthDim iy As Integer = PBLineChart.Heighte.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 SubEnd Class