| Autor |
Beitrag |
ffprogramming
      
Beiträge: 44
Win XP
C# Java C PHP
|
Verfasst: Mo 08.02.10 16:59
Ich habe zwei Zahlenarrays und muss diese in ein Pointarray umwandeln.
Das eine Zahlenarray enthält die X Koordinaten, das andere die Y-Koordinaten.
1.) Jetzt weiß ich nicht wie man dieses Zahlenarray in das Pointarray umwandeln kann.
2.) Das Point Array kann doch nur aus ganzen Zahlen (1,2,3) bestehen oder sind auch Kommazahlen erlaubt(1,1 1,2...)?
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mo 08.02.10 17:10
Hallo,
es gibt zum einen die Klasse Point, welche nur integer Werte verarbeiten kann. Die Klasse PointF kann aber auch floats nehmen. Das brauchst du wahrscheinlich
Gruß Daniel
|
|
ffprogramming 
      
Beiträge: 44
Win XP
C# Java C PHP
|
Verfasst: Mo 08.02.10 17:15
Nehmen wir mal an ich habe zwei float arrays: float[] x, float[] y
Nun würde ich die gerne beide als PointF Array haben:
Wie sieht dann der Quellcode aus?
C#-Quelltext 1:
| PointF[] points = new PointF[x.Length]; |
Und weiter?
Zuletzt bearbeitet von ffprogramming am Mo 08.02.10 17:21, insgesamt 1-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 08.02.10 17:41
Stichwort: Schleife
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mo 08.02.10 17:48
Überlege doch was du machen willst. Formuliere es in Schritte und dann implementiere diese Schritte.
Wenn es dann bei der spezifischen Umsetzung hapert, kannst du gerne nochmal im Forum fragen. Aber zumindest die Theorie sollte einleuchten... sonst wird es total schwer.
Gruß Daniel
|
|
ffprogramming 
      
Beiträge: 44
Win XP
C# Java C PHP
|
Verfasst: Mo 08.02.10 17:50
C#-Quelltext 1: 2: 3: 4: 5:
| for (int i = 0; i < x.Length; i++) { point[i][0] = x[i]; point[0][i] = y[i]; } |
Ich dachte an so etwas aber dann bekomme ich den Fehler:
Indizierung mit [] kann nicht auf einen Ausdruck vom Typ "System.Drawing.PointF" angewendet werden.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 08.02.10 17:52
Schau Dir bitte mal die Eigenschaften der Point-Klasse an, dann siehst Du, wie Du die Koordinaten setzen kannst / musst.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mo 08.02.10 17:53
Wie kommst du den auf point[i][0] ? wie ist point deklariert?
Vom Ansatz her richtig (über die SChleife der vorhanden zu iterieren und dann die Points erstellen). Die Frage ist halt wie du point instantiierst und dann nachher die Werte zuweißt. Denk daran PointF ist ein objekt und muss dementsprechend instantiiert (da kann man dann gleich die Werte aus den x/y-Array nehmen) werden.
Gruß Daniel
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 08.02.10 17:55
danielf hat folgendes geschrieben : | | Denk daran PointF ist ein objekt und muss dementsprechend instantiiert | Point und PointF sind Structs und müssen daher nicht instanziert werden.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
danielf
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mo 08.02.10 18:17
Danke für den Hinweis.... und das heißt genau? Ich mein
C#-Quelltext 1: 2:
| System.Drawing.PointF p; p.X = 4; |
Meckert der Kompilier... in wie weit muss ich es dann nicht instanziiert?
Danke&Gruß
Daniel
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 08.02.10 18:40
Hm. Interessant. C# meckert da tatsächlich, in Delphi Prism funktioniert das einfach so 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 08.02.10 20:12
In C# kann ein nicht initialisiertes Struct nur benutzt werden, nachdem jedem Feld ein Wert zugewiesen wurde. Sind die private, wird das natürlich nicht so einfach  .
Aber zuweisbare Properties bei Structs, also Mutable Structs, sind sowieso ein Designfehler. Einfach ignorieren und stattdessen immer über den Konstruktor gehen.
_________________ >λ=
|
|
ffprogramming 
      
Beiträge: 44
Win XP
C# Java C PHP
|
Verfasst: Di 09.02.10 18:45
Ich komme leider immer noch nicht weiter (obwohl ich mich damit beschäftigt habe).
Es wäre nett, wenn jemand mir helfen könnte.
Zuletzt bearbeitet von ffprogramming am Di 09.02.10 18:49, insgesamt 1-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 09.02.10 18:49
Was hast Du denn seit Deinem letzten Posting versucht und wo kamst Du nicht weiter?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ffprogramming 
      
Beiträge: 44
Win XP
C# Java C PHP
|
Verfasst: Di 09.02.10 18:57
Habe auf msdn gelesen. Dort finde ich allerdings nur implementationen wie:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| PointF point1 = new PointF(50.0F, 50.0F); PointF point2 = new PointF(100.0F, 25.0F); PointF point3 = new PointF(200.0F, 5.0F); PointF point4 = new PointF(250.0F, 50.0F); PointF point5 = new PointF(300.0F, 100.0F); PointF point6 = new PointF(350.0F, 200.0F); PointF point7 = new PointF(250.0F, 250.0F); PointF[] curvePoints = {point1, point2, point3, point4, point5, point6, point7}; |
Ich habe allerdings die Punkte in einem float Array, dass zur Laufzeit erstellt wird.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 09.02.10 18:59
Aha. Du scheinst doch aber zu wissen, wie man auf ein Array zugreift. Wie man einen PointF erstellt, weißt Du ja jetzt auch. Und wo hakt es nun?
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ffprogramming 
      
Beiträge: 44
Win XP
C# Java C PHP
|
Verfasst: Di 09.02.10 19:01
Ich bekomme es nicht in die Schleife.
C#-Quelltext 1: 2: 3: 4:
| for (int i = 0; i < xr.Length; i++) {
} |
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 09.02.10 19:08
Du musst doch nur mir der Scheife die Elemente durchgehen und für jedes Element ein PointF erstellen und dem Element zu weisen.
Elementzuweisung kennst Du doch und wie man einen PointF erstellt auch. Dein Quelltext hier ist doch gar nicht so schlecht, Du hast halt nur einen "normalen" Array-Zugriff und nicht so ein "Doppelding".
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
ffprogramming 
      
Beiträge: 44
Win XP
C# Java C PHP
|
Verfasst: Di 09.02.10 19:15
Ich verstehe nicht warum
C#-Quelltext 1:
| pointd[i,i] = {xr[i],yr[i]}; |
Nicht funktioniert?
Ein 2d Array erhält man ja so:
C#-Quelltext 1:
| int[,] array = { { 1, 2 }, { 3, 4 }}; |
Erzeuge ich PointF falsch?:
C#-Quelltext 1:
| PointF[,] pointd = new PointF[xr.Length , yr.Length]; |
Das Point Array soll nachher zum Zeichnen dienen. Aber so kann man glaube ich es auch nicht zeichnen:
2-Argument: kann nicht von "System.Drawing.PointF[*,*]" in "System.Drawing.Point[]" konvertiert werden.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 09.02.10 19:23
Wieso willst denn überhaupt ein 2D-Array? Das ist doch irgendwie doppelt dann, denn die Kooordinationinformation ist doch in den Punkten selber hinterlegt, da müsste doch ein 1D-Array reichen?
(Dass Du ein 2D-Array haben willst, ist mir auch irgendwie erst jetzt klar geworden)
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|