Hey,
I am currently working on drawing out wire diagrams , I get all the co-ordinates from another program and simply draw them out in a picture box.
So that is my code, some of the code may look funky, but that is because I am using a COM object and Windows Script Host Model.
The results I get back in x and y and co-ordinates based on the other program's co-ordinates. Ofcourse it is easy for me to adjust the co-ordinates so that it works on my screen but how would I go about drawing it so that the image automatically redraws to size based on the window?
Is it possible to set the co-ordinate system of the GDI graphics? For example a setting to tell windows that every 10 points is just 1.
so for the picture box of height 100x100. The co-ordinates start at 0 and go to 400, making each point in the picturebox actually 0.25.
I am looking around for answer but any suggestions is appreciated :)
I am currently working on drawing out wire diagrams , I get all the co-ordinates from another program and simply draw them out in a picture box.
vb.net Code:
Private Sub test(Optional mark As Boolean = False) Dim Img As New Bitmap(PictureBox1.Width, PictureBox1.Height) Dim g As Graphics = Graphics.FromImage(Img) g.Clear(Color.White) Dim graphiccounter As Integer = 0 Dim result As Object 'Needed to get co-ordinates Dim x() As Object Dim y() As Object Dim z() As Object Dim results As Object 'Will take in x and y values from objects above Dim x_loc(0) As Integer Dim y_loc(0) As Integer _Paths.Clear() namepath.Clear() For Each row As DataGridViewRow In DataGridView2.Rows If row.Visible = True Then 'sets variables to nothing, needed in order to run certain commands results = Nothing x = Nothing y = Nothing z = Nothing 'get the co-ordinates and stores them in x,y,z. results will contain the number of co-ordinates stored. result = cor.GetPath(x, y, z) 're declares variables based on how many co-ordinates ReDim x_loc(result) ReDim y_loc(result) counter = 1 _Paths.Add(New GraphicsPath) namepath.Add(New NamedPath) For k = 1 To result - 1 x_loc(k) = (x(k)) y_loc(k) = PictureBox1.Height - (y(k)) x_loc(k + 1) = (x(k + 1)) y_loc(k + 1) = PictureBox1.Height - (y(k + 1)) spacer += 5 _Paths(graphiccounter).AddLine(x_loc(k), y_loc(k), x_loc(k + 1), y_loc(k + 1)) namepath(graphiccounter).Name = row.Cells("Core_Id").Value namepath(graphiccounter).Path = _Paths(graphiccounter) 'g.FillEllipse(Brushes.Black, x_loc(k + 1) - 4, y_loc(k + 1) - 4, 8, 8) counter = counter + 1 Next _Pen = New Pen(Brushes.HotPink, 5) g.DrawPath(_Pen, namepath(graphiccounter).Path) graphiccounter += 1 ' Console.WriteLine("New Line") End If Next PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize PictureBox1.Image = Img End Sub
So that is my code, some of the code may look funky, but that is because I am using a COM object and Windows Script Host Model.
The results I get back in x and y and co-ordinates based on the other program's co-ordinates. Ofcourse it is easy for me to adjust the co-ordinates so that it works on my screen but how would I go about drawing it so that the image automatically redraws to size based on the window?
Is it possible to set the co-ordinate system of the GDI graphics? For example a setting to tell windows that every 10 points is just 1.
so for the picture box of height 100x100. The co-ordinates start at 0 and go to 400, making each point in the picturebox actually 0.25.
I am looking around for answer but any suggestions is appreciated :)