Announcement

Collapse
No announcement yet.

Polygonzug zeichnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Polygonzug zeichnen

    Hallo,

    ich habe zwei Textdateien x.txt und y.txt. In x.txt speichere ich die x-Werte eines Polygonzugs, die y-Werte des Polygonzugs in y.txt. Diese Strings liegen folgendermaßen vor: "x1,x2,x3,..."; also mit einem Komma getrennt; rationale Zahlen werden mit einem Punkt (.) erstellt.
    Was ich machen will: Zwei Werte xn und yn bilden einen Punkt und ich will mittels GDI+ die Punkte des Polygonzugs zeichnen. Dabei geht es mir jedoch nicht darum, die Punkte zu zeichnen, sondern es soll nur der Polygonzug sichtbar sein. Könnte mir jemand helfen??

    Vielen Dank im voraus und Gruß
    piepser

  • #2
    die punkte sind ja quasi automatisch sichtbar wenn du den Polygonzug zeichnen willst?!

    [highlight=vbnet]

    Dim instance As Graphics
    Dim pen As Pen
    Dim points As Point()

    instance.DrawPolygon(pen, points)

    [/highlight]

    wobei points ein Array an aus Punkten (Klasse : Point) ist, in das Array fügst du x0,y0 bis xn, yn ein ..

    und die initierung des Graphics Objekts wirst du auch anders machen müssen, sonst wirst du nichts sehen.
    Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

    Comment


    • #3
      Was ist denn nun eigentlich das Problem? Das Lesen der Datei oder das Zeichnen?

      Comment


      • #4
        Hi,

        importiert krieg ich das ganze als String mit Hilfe der my.computer...-klasse. Wie wandle ich das dann jeweils die x-Werte und y-Werte ein Array um, sodass pro Element eine rationale Zahl auftaucht. Zeichnen will ich das array dann so:
        for i=0 to array_x_werte.length()-1 step 1
        e.graphics.drawline(pen, array_x_werte(i), array_y_werte(i), _
        array_x_werte(i+1), array_y_werte(i+1))
        next

        Probleme sind also noch:
        -Wie wandle ich die Strings der x-/y-Werte zu einem Array um?
        -Wie vermeide ich Probleme mit dem Datentyp (Double, Integer)?
        -Funktioniert das mit dem Zeichnen so?

        Gruß und Dank
        piepser

        @das-d: Was hab ich unter der Initiierung des Graphic-Objekts zu verstehen?!??!

        Comment


        • #5
          In VB bin ich leider nicht so fit. Ich schreibs mal in C#

          [highlight=c#]
          public class Point
          {
          public double X { get; set; }
          public double Y { get; set; }
          }

          public static class PointConverter
          {
          public static IList<Point> Convert(String inputX, String inputY)
          {
          IList<double> xValues = Convert(inputX);
          IList<double> yValues = Convert(inputY);

          List<Point> result = new List<Point>();

          for(int i=0; i<xValues.Count(); i++)
          {
          result.Add(new Point() { X = xValues.Item[i], Y = yValues.Item[i] });
          }

          return result;
          }

          private IList<double> Convert(String valueString)
          {
          return valueString.Split(";").Select(v => Double.Parse(v)).ToList();
          }
          }

          public static void main()
          {
          IList<Point> readPoints = PointConvert.Convert(File.ReadAllText(@"MeinFileNa meX"),File.ReadAllText(@"MeinFileNameY"));

          // hier readPoints zeichnen
          }
          [/highlight]

          So in etwa würde ich den Code zum Lesen gestalten. Obwohl wenn ichs mir grad so durchlese könnte ein Einsteiger leicht überfordert sein. Geht das oder soll ich eine andere Variante hinschreiben?

          Comment


          • #6
            @fanderelf: Einsteigerfreundlich ist es zwar nicht, aber da muss er durch. Bringt ja nix mit der Kirche ums Dorf zu rennen nur weil es dann leichter zu lesen wäre.

            Gruß Womble

            Comment


            • #7
              Kann ich das ganze jetzt durch einen Converter jagen und mir als vb.net ausgeben lassen? Oder wie kann ich das in mein vb.net-Projekt einbauen.

              Lg piepser

              Anhang:

              [highlight=vbnet]
              Public Class Point
              Public Property X() As Double
              Get
              Return m_X
              End Get
              Set
              m_X = Value
              End Set
              End Property
              Private m_X As Double
              Public Property Y() As Double
              Get
              Return m_Y
              End Get
              Set
              m_Y = Value
              End Set
              End Property
              Private m_Y As Double
              End Class

              Public NotInheritable Class PointConverter
              Private Sub New()
              End Sub
              Public Shared Function Convert(inputX As [String], inputY As [String]) As IList(Of Point)
              Dim xValues As IList(Of Double) = Convert(inputX)
              Dim yValues As IList(Of Double) = Convert(inputY)

              Dim result As New List(Of Point)()

              For i As Integer = 0 To xValues.Count() - 1
              result.Add(New Point() With { _
              Key .X = xValues.Item(i), _
              Key .Y = yValues.Item(i) _
              })
              Next

              Return result
              End Function

              Private Function Convert(valueString As [String]) As IList(Of Double)
              Return valueString.Split(";").[Select](Function(v) [Double].Parse(v)).ToList()
              End Function
              End Class

              Public Shared Sub main()
              Dim readPoints As IList(Of Point) = PointConvert.Convert(File.ReadAllText("MeinFileNam eX"), File.ReadAllText("MeinFileNameY"))

              ' hier readPoints zeichnen
              End Sub
              [/highlight]

              Comment


              • #8
                irgendwie funktioniert das nicht

                Comment


                • #9
                  Na irgendwie funktioniert das nicht hilft uns aber auch nicht weiter... was geht denn nicht?

                  Comment


                  • #10
                    Wenn ich den Code in eingebe, ergibt sich folgende Fehlermeldung...

                    Comment


                    • #11
                      Warum steht Select in eckigen Klammern?
                      Günther

                      Comment


                      • #12
                        ich habs ma geändert. immer noch fehlerhaft

                        Comment


                        • #13
                          geändert in was?

                          lass mich raten...
                          der gleiche Fehler?
                          Günther

                          Comment

                          Working...
                          X