Autor |
Beitrag |
Clive
Hält's aus hier
Beiträge: 4
|
Verfasst: Mi 25.11.09 20:41
Hallo
habe gerade ein Programm am laufen und soll einen Raster in X und Y Richtung erstellen:
Es werden Daten eingelesen von einem Motor und daher brauche ich jetzt einen Raster damit ich die Daten besser ablesen kann(so eine Art Schachbrett)
nur bei mir ist immer die erste und die letzte Spalte größer als der Rest!
Wo ist hier mein Problem?
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| for (int i = 0; i < 10; i++) { if (i == 0) { g.DrawLine(pen, 0, panel1.Height, 0, 0); } else { g.DrawLine(pen, ((panel1.Width / 10)*i), panel1.Height, ((panel1.Width / 10)*i), 0); } }
for (int j = 0; j < 10; j++) { if (j == 0) { g.DrawLine(pen, 0, panel1.Height, panel1.Width, panel1.Height);
} else { g.DrawLine(pen, 0, ((panel1.Height/10)*j), panel1.Width, ((panel1.Height/10)*j)); } } |
Moderiert von Christian S.: Code- durch C#-Tags ersetzt
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 26.11.09 08:09
Hallo und  hier im Forum!
Clive hat folgendes geschrieben : | nur bei mir ist immer die erste und die letzte Spalte größer als der Rest! |
Die erste wüsste ich jetzt nicht warum, hast du das einmal am Bildschirm ausgemessen?
Bei der letzten ist es klar. Denn du rechnest mit ganzen Zahlen, dementsprechend wird bei der Division bereits gerundet. Und dadurch kommt eine Ungenauigkeit ins Spiel, die dann dazu führt, dass am Ende die letzte Spalte um eben diesen Nachkommaanteil größer oder kleiner ist.
Wenn du explizit mit Gleitkommazahlen statt Ganzzahlen rechnest, dann sollte es auch klappen: C#-Quelltext 1:
| g.DrawLine(pen, (((float)panel1.Width / 10) * i), panel1.Height, (((float)panel1.Width / 10) * i), 0); |
|
|
Clive 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 26.11.09 08:35
Herzlichen dank für die Antwort!
So ich habe das mal probiert aber sie selbst:
i46.tinypic.com/23h86qx.png
Sind alle nicht gleich!
Moderiert von Christian S.: Img-Tags entfernt
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 26.11.09 08:41
Sieht so aus als hättest du vertikal (also im zweiten Teil, wo du X-Richtung geschrieben hast) das (float) noch nicht ergänzt. Und deshalb ist die untere Zeile noch größer.
|
|
Clive 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 26.11.09 18:04
Herzlichen Dank für die schnelle Antwort!
So hast du das gemeint oder?
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| for (int i = 0; i < 10; i++) { if (i == 0) { g.DrawLine(pen, 0, panel1.Height, 0, 0); } else { g.DrawLine(pen, (((float)panel1.Width / 10) * i), panel1.Height, (((float)panel1.Width / 10) * i), 0); } }
for (int j = 0; j < 10; j++) { if (j == 0) { g.DrawLine(pen, 0, panel1.Height, panel1.Width, panel1.Height);
} else { g.DrawLine(pen, 0, ((float)(panel1.Height / 10) * j), panel1.Width, ((float)(panel1.Height / 10) * j)); } } |
i47.tinypic.com/qzjfv6.png
was mache ich falsch?
Moderiert von Christian S.: Code- durch C#-Tags ersetzt
Moderiert von Christian S.: Img-Tags entfernt
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Do 26.11.09 19:50
C#-Quelltext 1:
| (float)panel1.Width / 10 |
ist richtig,
C#-Quelltext 1:
| (float)(panel1.Height / 10) |
nicht. Die Konvertierung sollte schon vor der Division geschehen  .
_________________ >λ=
|
|
Clive 
Hält's aus hier
Beiträge: 4
|
Verfasst: Do 26.11.09 20:14
Herzlichen Dank..hat geklappt!
|
|
|