Laden...

Beim Zeichnen in ein Panel den Ursprung des Koordinatensytems ändern

Erstellt von chrizstone vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.139 Views
C
chrizstone Themenstarter:in
5 Beiträge seit 2012
vor 12 Jahren
Beim Zeichnen in ein Panel den Ursprung des Koordinatensytems ändern

Hi Leute,

wenn ich auf einem Panel etwas zeichnen möchte, dann liegt der Ursprung des Panel ja immer oben links in der Ecke! Sprich ein Punkt mit den Koordinaten 1,1 würde 1 nach rechts und einen nach unten gehen!

Ich würde es aber gerne haben das der Punkt mit 1,1 nicht nach unten geht sondern nach oben! Kann ich den Ursprung des Panels irgendwie anders setzen?

5.742 Beiträge seit 2007
vor 12 Jahren

Hallo chrizstone,

herzlich willkommen hier auf myCSharp.de!

Ich würde es aber gerne haben das der Punkt mit 1,1 nicht nach unten geht sondern nach oben! Kann ich den Ursprung des Panels irgendwie anders setzen?

Wozu?
Passe doch einfach die Berechnung der Koordinaten entsprechend an.

Ansonsten kannst du versuchen, mit Transformationen irgendwie dein Koordinatensystem umzudrehen; wie gesagt sehe ich jedoch den Sinn dahinter nicht.

C
chrizstone Themenstarter:in
5 Beiträge seit 2012
vor 12 Jahren

Naja, das hätte ich ja gemacht! Es geht aber um ein fast fertiges Projekt wo der Kunde jetzt auf einmal möchte das es andersrum ist! Ich berechne an etlichen Stellen verschiedene Punkte und möchte jetzt nicht an jeder dieser Stellen Code ändern, deswegen die Frage mit dem Ursprung!

5.658 Beiträge seit 2006
vor 12 Jahren

Ich würde es aber gerne haben das der Punkt mit 1,1 nicht nach unten geht sondern nach oben! Kann ich den Ursprung des Panels irgendwie anders setzen?

Also mal angenommen, du hast ein Panel von 300 x 300 Pixel. Die Koordinate (0;0) soll an der Position (0;299) gezeichnet werden, (0;1) an der Position (0;298). Ich denke, da solltest du selbst draufkommen, was man rechnen muß...

Christian

Weeks of programming can save you hours of planning

C
chrizstone Themenstarter:in
5 Beiträge seit 2012
vor 12 Jahren

Ich möchte nichts rechnen, das ist doch mein problem! Weil ich dann an etlichen Stellen rechnen müsste!

B
357 Beiträge seit 2010
vor 12 Jahren

Du wirst jedenfalls keine Property mit "Reverse Coordinates" finden. Ums Rechnen führt da kein Weg herum, die Frage ist nur noch, wie du das machst. Ich würde mir ein eigenes Control von Panel ableiten und entsprechende Um-/Berechnungen im Control machen, anstatt bei jedem Abruf der Felder.

5.658 Beiträge seit 2006
vor 12 Jahren

...und vor allem wirst du auch keine MagicallyTransformCoordinate-Methode im Framework finden.

Umrechnen mußt du nur genau einmal, nämlich bei der Anzeige.

Christian

Weeks of programming can save you hours of planning

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo MrSparkle,

...und vor allem wirst du auch keine MagicallyTransformCoordinate-Methode im Framework finden.

warum nicht? Es geht doch wohl ums Zeichnen in ein Panel. Also ums Zeichnen per Graphics-Objekt. Und das kann doch Koordinatentransformationen.

Hallo chrizstone,

siehe Graphics.Transform und auch TranslateTransform(Single, Single) und ScaleTransform(Single, Single).

herbivore

5.658 Beiträge seit 2006
vor 12 Jahren

Hi herbivore,

stimmt, manchmal sieht man den Wald vor lauter Bäumen nicht... Wobei das Subtrahieren der Panel-Höhe jetzt auch nicht so viel aufwändiger wäre 😃

Christian

Weeks of programming can save you hours of planning