Benutzer mit den meisten Antworten
DrawRectangles mit unterschiedlichen Farben

Frage
-
Hallo allerseits,
ich möchte gerne mehrere Rechtecke zugleich zeichnen aber mit unterschiedlichen Farben (Pen) wenn möglich.
Derzeit habe ich
e.Graphics.DrawRectangles(new System.Drawing.Pen(borderColors[0]), borderRECT);
borderColor hat die gleichen anzahl der Indizien wie borderRECT jedoch Farben und in diesem Fall wird immer die gleiche (erste) Farbe verwedet.
Ich möchte auch keine Schleife verwenden, ausser es gibt keine andere alternative.
Wäre für jede Hilfe sehr dankbar.
Lg
GeRi
Antworten
-
Ich finde die Beschreibung in den MS Docs ist hier recht eindeutig: Du kannst mit DrawRectangles mehrer Rechtecke malen, aber eben nur mit einem Pen, also letztlich einer Farbe.
Hat denn jedes Rechteck eine andere Farbe? Ansonsten könntest du halt die Rechtecke farblich gruppieren
- Als Antwort vorgeschlagen Florian Haupt Donnerstag, 7. November 2019 12:31
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 15. November 2019 07:27
Alle Antworten
-
Hy und danke für deine Antwort.
Nein die Farbe sind nicht egal, die Farben sollten von der Auflistung "borderColor" geholt werden.
Für jeden Rectangle von "borderRECT" gibts eine Farbe in "borderColor" an der gleichen Index pos.
Bsp:
borderRECT hat 250 Rects (Kann bis zu 2500 Rects haben)
borderColor hat 250 Farben (Kann bis zu 2500 Farben haben)
Zu jeder Rect muss eine entsprechende Farbe zugeweisen werden
borderRECT[0] => borderColor[0]
borderRECT[1] => borderColor[1]
borderRECT[n] => borderColor[n]
Warum ohne Schleifen? Ist in diesem Fall ein bisschen schneller als die Schleife
for (int j = 0; j < borderPNT.Count; j++) { e.Graphics.DrawRectangle(new System.Drawing.Pen(borderColors[j]), new Rectangle(borderPNT[j].X, borderPNT[j].Y, 3, 3)); }
Danke und Lg GeRi
- Bearbeitet geRe.LI Mittwoch, 6. November 2019 12:59
-
Ich habe das Problem noch nicht richtig verstanden.
Wenn borderRECT eine Liste von Rechtecken (250 - 2500) ist, dann muss doch die Liste an irgendeiner Stelle in deinem Code durchlaufen werden um alle Rechtecke zu zeichnen. Das programmierst du doch nicht fest?!?!
Ergo muss doch durch die Liste durchiteriert werden und dabei kannst du über den Index immer auf beide Listen zugreifen. Das ist doch auch "normalerweise" von der Performance her völlig unkritisch.
Gruß
David -
Die Liste wird zusamen gestellt bevor noch begonnen wird zu zeichnen.
Somit sind alle Listen (borderRECT[250-2500], borderColor[250-2500]) vor dem eigentlichen Zeichnen befüllt und muss nicht erneut durchiteriert werden.
Ich schätze mal das es ohne einer zweiten Schleife (wobei die zweite Schleife immer wieder aufgerufen wird) nicht wirklich realisiert werden kann da mann sonst keine unterschiedlichen Farben einer RECT zuweisen kann, sondern immer die gleiche Farbe.
Trotzdem Danke für die Unterstützung und Lg
GeRi
-
Ich finde die Beschreibung in den MS Docs ist hier recht eindeutig: Du kannst mit DrawRectangles mehrer Rechtecke malen, aber eben nur mit einem Pen, also letztlich einer Farbe.
Hat denn jedes Rechteck eine andere Farbe? Ansonsten könntest du halt die Rechtecke farblich gruppieren
- Als Antwort vorgeschlagen Florian Haupt Donnerstag, 7. November 2019 12:31
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 15. November 2019 07:27