Hi,
kenn jemand das Problem das der erste Pixel immer oben links ist (wo er ja auch hingehört). Wenn ich jetzt mal den "NullPunkt" unten links brauche, wie geh ich da vor?
Mit einem Offset arbeiten oder gibts da auch elegantere Lösungen?
Hört sich etwas seltsam an aber vielleicht kenn ja einer das Problem.
Dank im Voraus!
0,0 Pixel im Canvas
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Naja, bei deinem "0-Punkt" ist dann eben x=0 und y=Höhe des Canvas.
Du musst dann immer die tatsächlichen y-Werte von der Höhe abziehen. Um's einfacher zu machen, kann man die Umwandlung ja in eine Funktion packen. Tolle Erklärung
. Beispiel:
Etwas wirklich eleganteres fällt mir auch nicht ein.
Gruß, mawe
Naja, bei deinem "0-Punkt" ist dann eben x=0 und y=Höhe des Canvas.
Du musst dann immer die tatsächlichen y-Werte von der Höhe abziehen. Um's einfacher zu machen, kann man die Umwandlung ja in eine Funktion packen. Tolle Erklärung

Code: Alles auswählen
from Tkinter import *
x1,x2 = 100,100
def y(i):
return x2 - i # vielleicht noch minus ein Offset, soll ja nicht in der Ecke kleben :-)
root = Tk()
c = Canvas(width=x1,height=x2)
c.pack()
c.create_line(
0,y(0), # "0-Punkt"
10,y(10),
arrow=FIRST)
mainloop()
Gruß, mawe
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi antimicro,
das Problem kennt jeder, der sich etwas mit Computergrafik beschäftigt.
Gelöst wird das Problem meist durch eine Verschiebung der Koordinaten nach links unten und einer Skalierung der y-Werte mit -1. Das ganze lässt sich vereinfachen, indem man einfach die y Koordinate von der Höhe des Ausgabefensters abzieht.
Gruß
Dookie
das Problem kennt jeder, der sich etwas mit Computergrafik beschäftigt.
Gelöst wird das Problem meist durch eine Verschiebung der Koordinaten nach links unten und einer Skalierung der y-Werte mit -1. Das ganze lässt sich vereinfachen, indem man einfach die y Koordinate von der Höhe des Ausgabefensters abzieht.
Code: Alles auswählen
def ktrans(canvas, x, y):
return x, canvas["height"] - y
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi nochmal,
kleine Berichtigung:
Bei einer Höhe von z.B. 480 ist der grösste y-Wert 479 und davon muss y abgezogen werden. Der kleinst y-Wert is ja 0 und von 0 - 479 sinds dann die 480 Zeilen.
Gruß
Dookie
@mawe: ich hab etwas zu lange gebraucht für mein Posting, weil die Nudeln fürs Abendessen dazwischen abgeseiht werden wollten
kleine Berichtigung:
Code: Alles auswählen
def ktrans(canvas, x, y):
return x, (canvas["height"] - 1) - y
Gruß
Dookie
@mawe: ich hab etwas zu lange gebraucht für mein Posting, weil die Nudeln fürs Abendessen dazwischen abgeseiht werden wollten

[code]#!/usr/bin/env python
import this[/code]
import this[/code]