Grafikelemente wählen



  • Hallo.
    Ich schreibe gerade eine Klasse, die 2d Zeichnungselemente enthält (Linie, Bogen, Kreis).
    Diese Elemente sollen grafisch dargestellt werden. Mit TCanvas kein Problem.
    Ich möchte aber, dass der Anwender ein grafisches Element auf dem Bildschirm mit der Maus wählen kann. Das Programm sollte erkennen, welche Linie, Bogen, usw aus der Klasse gewählt wurde.
    Hat jemand eine Idee, wie sich so etwas implementieren lässt ?
    :xmas1:



  • Hallo

    Als einfachstes kannst du die Koordinaten des Mausklicks in einer Schleife mit den Flächendaten der Elemente vergleichen, bis du eine Fläche getroffen hast (Geometrie...). Danach stellt sich nur noch die Frage, ob und wie Optimierungen sinnvoll sind.

    bis bald
    akari



  • Hallo.
    Danke für den Vorschlag.
    Die Elemente haben eigentlich keine Fläche, es sind keine geschlossene Figuren sondern zweidimensionale Elemente. Z.B. Linie von X3,125 Y25,124 nach X7,1 Y28,3.
    Die koordinaten, die die grafische Elemente als Objekte der Klasse besitzen, stimmen auch nicht 1:1 überein mit dem Bildschirmkoordinaten, da ein Line-Objekt auch Koordinaten von z.B. -12254,845 besitzen kann. Diese muss ich sowieso auf Bildschirm-Koordinaten umwandeln, so dass diese Art der implementierung noch schwirieger sein dürfte.
    Noch jemand eine Idee ?



  • Bei Elementen ohne richtige Fläche musst du halt einen anklickbaren Bereich definieren. Beispielsweise bei einer Linie ein virtuelles Rechteck mit 4 Pixeln Abstand auf allen Seiten.
    Um eine Koordinatentransformation kommst du sowieso nicht drumrum. Wenn deine Objekte als separate Klassen definiert sind kann man ja dort alles mit einbauen.


Anmelden zum Antworten