En weer zitten we met een probleem waar ik als newby in vb2010 express niet uit kom ondanks enkelen dagen van zoekwerk. nl.
Ik wil enkelen grafieken maken waarvan de maatstaf van de grafiek afhankelijk is van de maximale waarde
hierdoor bereik ik naar mijns inzien een redelijke overzicht in een grafiek
Nl. dat de waarde de randen niet overschrijden en/of de waardes niet een te klein oppervlakte beslaan.
de bitmap.images worden in een zijn transparent bitmap verwerkt tot dat alles in een picturebox wordt gepresenteer.
Dit moet een grafiek opleveren met verschillende rasters afhankelijk van de max.waarden.
de 5 lijne hebben verschillende kleuren
maar helaas tot op heden kan ik slecht enkelen proefstukjes aan de praat krijgen maar niet het geheel
of het werkt niet (zoals nu) of ik krijgt enkelen fout meldingen
wie kan mij helpen. gr jan
Ik wil enkelen grafieken maken waarvan de maatstaf van de grafiek afhankelijk is van de maximale waarde
hierdoor bereik ik naar mijns inzien een redelijke overzicht in een grafiek
Nl. dat de waarde de randen niet overschrijden en/of de waardes niet een te klein oppervlakte beslaan.
Code:
Imports System.IO
Imports System.Data
Imports System.Drawing.Pen
Module Module1
Private pictureBox5 As New PictureBox()
Dim alpha(200) As Double
Dim CL(200) As Double
Dim CD(200) As Double
Dim CDp(200) As Double
Dim CM(200) As Double
Dim Top_xtr(200) As Double
Dim Bot_xtr(200) As Double
Dim x(200) As Double
Dim Y(200) As Double
Dim gain As Double
Dim aantal As Integer
Dim RE(10) As Integer
Dim pad As String
Sub Mod1(strnaam() As String, aantal As Integer)
Dim j As Integer
Dim KL As New Pen(Brushes.Red)
Dim XR As Single
Dim YR As Single
Dim xgain As Integer
Dim Ygain As Integer
Dim x1 As Integer
Dim y1 As Integer
Dim x2 As Integer
Dim y2 As Integer
Dim cnt As Integer
Dim naam As String = ""
Dim line As String = ""
Dim CLmax As Double = 0
Dim Cdmax As Double = 0
Dim sr As StreamReader 'declaration of filestream to open file
Dim fs As FileStream 'clearing listbox data toavoid confusion
cnt = 0
Dim image1 As New Bitmap(600, 1000)
Dim g As Graphics = Graphics.FromImage(image1)
g.DrawImage(image1, New Point(0, 0))
fs = New FileStream(("D:\visual studio 2010\RES\") & strnaam(1), FileMode.OpenOrCreate) 'file inlezen
sr = New StreamReader(fs)
For j = 1 To aantal
line = sr.ReadLine
naam = sr.ReadLine
line = sr.ReadLine
line = sr.ReadLine
line = sr.ReadLine
Do Until sr.EndOfStream
cnt = cnt + 1
Dim testarray() As String = Split(sr.ReadLine, " ")
Dim LastNonEmpty As Integer = -1
For k = 0 To testarray.Length - 1
If testarray(k) <> "" Then
LastNonEmpty += 1
testarray(LastNonEmpty) = testarray(k)
End If
Next
CL(cnt) = Val(testarray(1))
CD(cnt) = Val(testarray(2))
If CD(cnt) > Cdmax Then Cdmax = CD(cnt)
If CL(cnt) > CLmax Then CLmax = CL(cnt)
Loop
Next j
fs.Close()
CLmax = 1.845 'TEST WAARDE
CDmax = 0.083
With Form1.PictureBox1
Select Case CLmax
Case Is < 1.5
Select Case Cdmax
Case Is < 0.05
.Image = New System.Drawing.Bitmap("D:\visual studio 2010\bitmap1-10.bmp")
Case 0.05 To 0.1
.Image = New System.Drawing.Bitmap("D:\visual studio 2010\bitmap1-11.bmp")
Case 0.1 To 0.15
.Image = New System.Drawing.Bitmap("D:\visual studio 2010\bitmap1-13.bmp")
Case Is >= 0.15
.Image = New System.Drawing.Bitmap("D:\visual studio 2010\bitmap1-12.bmp")
' Exit Select
End Select
Case Is >= 1.5
Select Case Cdmax
Case Is < 0.15
.Image = New System.Drawing.Bitmap("D:\visual studio 2010\bitmap1-21.bmp")
Case Is >= 0.15
.Image = New System.Drawing.Bitmap("D:\visual studio 2010\bitmap1-22.bmp")
End Select
End Select
End With
For j = 1 To aantal
cnt = 0
xgain = 4000
Ygain = 175
XR = 100
YR = 275
If j = 1 Then KL = Pens.Red
If j = 2 Then KL = Pens.Blue
If j = 3 Then KL = Pens.Green
If j = 4 Then KL = Pens.Purple
If j = 5 Then KL = Pens.Black
fs = New FileStream(("D:\visual studio 2010\RES\") & strnaam(j), FileMode.OpenOrCreate)
sr = New StreamReader(fs)
line = sr.ReadLine
naam = sr.ReadLine
line = sr.ReadLine
line = sr.ReadLine
line = sr.ReadLine
Do Until sr.EndOfStream
cnt = cnt + 1
Dim testarray() As String = Split(sr.ReadLine, " ")
Dim LastNonEmpty As Integer = -1
For k = 0 To testarray.Length - 1
If testarray(k) <> "" Then
LastNonEmpty += 1
testarray(LastNonEmpty) = testarray(k)
End If
Next
CL(cnt) = Val(testarray(1))
CD(cnt) = Val(testarray(2))
If cnt <> 1 Then
x1 = XR + CD(cnt - 1) * xgain
y1 = YR - CL(cnt - 1) * Ygain
x2 = XR + CD(cnt) * xgain
y2 = YR - CL(cnt) * Ygain
g.DrawLine(KL, x1, y1, x2, y2)
End If
Loop
Next
fs.Close()
Dim image3 As New Bitmap(600, 1000)
Dim gr As Graphics = Graphics.FromImage(image3)
gr.Dispose()
gr = Nothing
Form1.PictureBox1.Image = image3
End Sub
End Module
Dit moet een grafiek opleveren met verschillende rasters afhankelijk van de max.waarden.
de 5 lijne hebben verschillende kleuren
maar helaas tot op heden kan ik slecht enkelen proefstukjes aan de praat krijgen maar niet het geheel
of het werkt niet (zoals nu) of ik krijgt enkelen fout meldingen
wie kan mij helpen. gr jan