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
|