Mein Problem mit der Bezierkurve besteht noch immer...leider...aber
ich habe inzwischen die richtigen Werte in meiner Tabelle drin. Am
Code hat sich erstmal nicht viel geändert, möchte das hier jetzt nur
mal bringen um euch zu zeigen wie so eine Kurve im Schmidt-Diagram
wirklich aussehen kann...tabellenmäßig...genaugenommen sind es zwei
Kurven ;)
Winkel Y1 Y2
-10 199
-9 207
-8 236
-7 263
-6 300
-5 306
-4 339
-3 322
-2 332
-1 312
0 283
1 280
2 237
3 196
4 177
5 120
6 136
35 138
37 167
39 178
40 188
41 207
43 148
45 135
46 134
47 135
50 121
Als Diagramm kommt dann folgendes zustande sofern ich die Punkte mit
Linien zeichne:
http://i14.tinypic.com/5xzig7m.jpg
Als Code für die Linien hab ich folgendes verwandt:
For i=0 to Datensatz.ListBox1.ListCount-2
If Datensatz.ListBox1.Cell(i,1)<>"" And Datensatz.ListBox1.Cell(i
+1,1)<>""Then
Graph.Graphics.ForeColor=RGB(255,0,0)
Graph.Graphics.DrawLine Graph.Width/2+(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i,1))*cos(Cdbl(Datensatz.ListBox1.Cell(i,0))
*PI/180)), Graph.Height/2-(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i,1))*sin(Cdbl(Datensatz.ListBox1.Cell(i,0))
*PI/180)),Graph.Width/2+(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i+1,1))*cos(Cdbl(Datensatz.ListBox1.Cell(i
+1,0))*PI/180)),Graph.Height/2-(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i+1,1))*sin(Cdbl(Datensatz.ListBox1.Cell(i
+1,0))*PI/180))
End If
If Datensatz.ListBox1.Cell(i,2)<>"" And Datensatz.ListBox1.Cell(i
+1,2)<>""Then
Graph.Graphics.ForeColor=RGB(0,255,0)
Graph.Graphics.DrawLine Graph.Width/2+(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i,2))*cos(Cdbl(Datensatz.ListBox1.Cell(i,0))
*PI/180)), Graph.Height/2-(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i,2))*sin(Cdbl(Datensatz.ListBox1.Cell(i,0))
*PI/180)),Graph.Width/2+(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i+1,2))*cos(Cdbl(Datensatz.ListBox1.Cell(i
+1,0))*PI/180)),Graph.Height/2-(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i+1,2))*sin(Cdbl(Datensatz.ListBox1.Cell(i
+1,0))*PI/180))
End If
Next
Mit dem CurveShape klappt es leider immer noch nicht und ich hab
keine Ahnung warum...das ist irgendwie doof. Hat denn keiner eine
Idee? Denn Graden sind zwar ganz nett aber Bögen wären mir lieber.
Grüße Michael
Am 29.06.2007 um 17:49 schrieb Michael Köhler:
Ich hab da ein kleines Problem mit den einem CurveShape. Und zwar
habe ich eine Reihe von Punkten, welche durch eine Linie verbunden
werden sollen. Da es keine Graden sein sollen hab ich ein
CurveShape gewählt der Ordnung eins...und auch Ordnung zwei hab ich
schon getestet... leider ohne Erfolg. Meine Testreihe besteht aus
folgender Tabelle, welche aus einer ListBox kommen:
Winkel Wert
1 80
2 130
3 170
4 200
5 180
6 125
7 80
Mit dem CurveShape entsteht folgendes Bild:
http://i10.tinypic.com/4umukxh.jpg
Wenn ich die Punkte nur durch Linien verbinde dann kommt folgendes
Bild zustande:
http://i7.tinypic.com/4r1fxvl.jpg
Das Bild, bei welchem die Punkte durch Linien verbunden sind, ist
so vollkommen korrekt aber warum ist das Bild mit dem CurveShape
falsch? Besonders, warum gibt es bei dem CurveShape plötzlich
negative Werte? Das verstehe ich nicht so ganz.
Hier noch mein Code zum CurveShape:
For i=0 to 6 Step 2
grafik.controlx(0)=(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i+1,1))*cos(Cdbl(Datensatz.ListBox1.Cell(i
+1,0))*PI/180))
grafik.controly(0)=(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i+1,1))*sin(Cdbl(Datensatz.ListBox1.Cell(i
+1,0))*PI/180))
grafik.order=1
grafik.x=(skalierungsfaktor2*Cdbl(Datensatz.ListBox1.Cell(i,1))
*cos(Cdbl(Datensatz.ListBox1.Cell(i,0))*PI/180))
grafik.y=(skalierungsfaktor2*Cdbl(Datensatz.ListBox1.Cell(i,1))
*sin(Cdbl(Datensatz.ListBox1.Cell(i,0))*PI/180))
grafik.x2=(skalierungsfaktor2*Cdbl(Datensatz.ListBox1.Cell(i
+2,1))*cos(Cdbl(Datensatz.ListBox1.Cell(i+2,0))*PI/180))
grafik.y2=(skalierungsfaktor2*Cdbl(Datensatz.ListBox1.Cell(i
+2,1))*sin(Cdbl(Datensatz.ListBox1.Cell(i+2,0))*PI/180))
grafik.BorderColor=RGB(255,0,0)
Graph.Graphics.DrawObject grafik, Graph.Width/2, Graph.Height/2
Next
Und mein Code zu den einfachen Linien:
For i=0 to 358
If Datensatz.ListBox1.Cell(i,1)<>"" And Datensatz.ListBox1.Cell
(i+1,1)<>""Then
Graph.Graphics.ForeColor=RGB(255,0,0)
Graph.Graphics.DrawLine Graph.Width/2+(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i,1))*cos(Cdbl(Datensatz.ListBox1.Cell(i,
0))*PI/180)), Graph.Height/2+(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i,1))*sin(Cdbl(Datensatz.ListBox1.Cell(i,
0))*PI/180)),Graph.Width/2+(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i+1,1))*cos(Cdbl(Datensatz.ListBox1.Cell(i
+1,0))*PI/180)),Graph.Height/2+(skalierungsfaktor2*Cdbl
(Datensatz.ListBox1.Cell(i+1,1))*sin(Cdbl(Datensatz.ListBox1.Cell(i
+1,0))*PI/180))
End If
Next
Die If-Schleife dient nur dazu, dass ich keine Linie zum Nullpunkt
zeichen, ein Schönheitseffekt nur. Da muss ich mir bei CurveShape
auch noch was Überlegen, wie ich das abfange. Ich hoffe, jemand von
euch sieht meinen Fehler, ich bin jedenfalls grad blind.
Für die, die gleich Verbesserungsideen haben: Später sollen die
Winkel auch springen können, sprich die Tabelle könnte wie folgt
aussehen:
Winkel Wert
1 80
2 120
5 95
6 88
10 330
Diese Punkte sollen dann durch ein CurveShape verbunden werden.
Achja, noch eines. Wie speicher ich das Bild am Besten ab. Hierfür
hab ich jetzt nur mal ein FolderItem f verwendet und gesagt
f.SaveAsJpeg Graph. Wie man aber an den Bildern sehen kann ist das
nicht unbedingt sehr schön. Welches Format eignet sich denn
besonders gut zum Speichern eines Bildes, welches in meiner
Applikation gezeichnet wurde, so dass ich es später auch in ein
Word-Dokument oder ähnliches integrieren kann? Also diese Bilder
hier sind mir eigentlich zu verwaschen.
LG Michael
|