LabVIEWForum.de
Abbildung auf Frontpanel als "ImageMap" implementieren - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Grafik & Sound (/Forum-Grafik-Sound)
+---- Thema: Abbildung auf Frontpanel als "ImageMap" implementieren (/Thread-Abbildung-auf-Frontpanel-als-ImageMap-implementieren)

Seiten: 1 2


Abbildung auf Frontpanel als "ImageMap" implementieren - TSC - 08.06.2009 12:34

Moin zusammen,

ich würde gerne auf dem Frontpanel eine Grafik unterbringen. Je nachdem in welchen bereich (bei mir sinds 5 bereiche) dieser Grafik man klickt, sollen unterschiedliche events ausgelöst werden. Die Bereiche sollten nicht auf Rechteckige Formen begrenzt sein.

Eine alternative wäre es, mehrere Grafiken auf dem FP unterzubringen. Allerdings weiß ich nichtmal, wie man ein Bild auf das FP legt, das nicht rechteckig ist.

Meine erste Idee wäre, eine grafik mit 5 einfarbigen bereichen zu erstellen, darüber lege ich dann die tatsächliche grafik. dann prüfe ich auf mausklick und unterscheide abhängig von den x-y-koordinaten welche farbe geklickt wurde.

Finde das allerdings relativ aufwändig und überlege noch nach besseren lösungen.

Für tipps, schlagwörter, beispiele, ideen, fertige lösungen und freundliches auf die schultergeklopfe bin ich wie immer dankbar.

LG
Torsten


Abbildung auf Frontpanel als "ImageMap" implementieren - jg - 08.06.2009 13:29

Klingt irgendwie kompliziert. Fang doch das Maus-Klick-Event auf dem Bild per Event ab, und dann liest du per Property-Node die Position der Maus im Bild aus. Danach kommt deine Auswertung, wo du im Bild geklickt hast:

[attachment=18900]

Gruß, Jens


Abbildung auf Frontpanel als "ImageMap" implementieren - TSC - 08.06.2009 13:36

das würde bedeuten, dass ich zu jedem X-Y-koordinatenpaar weiß, zu welchem bereich es gehört. und genau das würde ich gerne irgendwie in der grafik verankern. die frage ist also eigentlich, ob ich eine grafik, in verschiedene bereiche unterteilen kann.

also ich scheiter an der auswertung der klickkoordinaten.

LG
Torsten


Abbildung auf Frontpanel als "ImageMap" implementieren - TSC - 08.06.2009 14:16

ich geb mal ein bissl material dazu was ich zur zeit habe:

mein vi inLv86_img: [attachment=18902]

die bitmaps (gezippt wegen uploadverbot): [attachment=18903]
das zipfile beinhaltet einmal die grafik wie sie angezeigt werden sollte (lueftung.bmp) und einmal die grafik die ich momentan verwende, um bereiche nach farben zu unterscheiden.

anhand der angeklickten farbe könnte ich nun in einer casestruktur die unterschiedlichen bereiche abfangen.

ich habe allerdings noch ein problem damit, lueftung.bmp über schema.bmp zu legen und trotzdem die richtigen farben zu erhalten.

:-(


Abbildung auf Frontpanel als "ImageMap" implementieren - jg - 08.06.2009 14:43

Alternativer Vorschlag: Anfang wie oben, dann schaust du an Hand der zurückgelieferten Koordinaten nach, welche Farbe das entsprechende Pixel in deinem schema.bmp hat?! Somit bist du weiterhin flexibel, und musst dich nicht mit dem Übereinanderlegen der Bilder rumärgern. (Ich befürchte, das haut sowieso nicht hin, obwohl ich mir noch nicht dein VI angeschaut habe).

Gruß, Jens

[attachment=18905]


Abbildung auf Frontpanel als "ImageMap" implementieren - TSC - 08.06.2009 14:50

gute idee, das versuch ich mal.

Ergebnis:
Lv86_img[attachment=18904]


das funktioniert soweit, trotzdem finde ich es nachwievor aufwendig. also wer schöne alternativen kennt. immer her damit.

LG
Torsten


EDIT:
in meinem VI plaziere ich die grafik schema.bmp genau unter der grafik lueftung.bmp, das ist natürlich nciht nötig.


Abbildung auf Frontpanel als "ImageMap" implementieren - jg - 08.06.2009 14:59

Unnötiges Anzeigen des Schema und unnötige Sequenz, dann wird's schon etwas übersichtlicher (vgl. meinen nachträglichen Screenshot).

Ich finde, so ist es doch relativ einfach und flexibel. Die Klickbereiche legst du durch das Schema-Bild fest, da müssen die Bereiche auch nicht rechteckig sein. Einzige Bedingung jetzt: Source-Bild und Schema-Bild müssen gleich groß sein.
Worauf du theoretisch/praktisch verzichten kannst: Resize des Picture-Control. Wenn du die PropertyNode Zoom Factor setzt, kannst du ein zu großes oder zu kleines Bild auf den gewüschten Anzeige-Bereich skalieren. Die PropertyNode "Mouse" gibt dir trotzdem noch die Koordintaten in Pixeln des Original-Bildes zurück.Smile

Gruß, Jens


Abbildung auf Frontpanel als "ImageMap" implementieren - TSC - 08.06.2009 15:05

ja die änderungen habe ich gemacht, ganz ohne sequenz gehts aber nicht oder? sonst setzt er mir "grafik" evtl. erst nachdem ich die schleife ausgeführt habe.
Lv86_img[attachment=18906]


Abbildung auf Frontpanel als "ImageMap" implementieren - rasta - 08.06.2009 15:14

Hallo Torsten,
Alternativen:
- statisch und bereichsbezogen.
Anzahl der Bereiche = Registerkarten Klassik(Transparent) - Bild anpassen und in den Hintergrund und alles gegebenenfalls gruppieren.
Für jeden passenden bereich ein Event-Case Mouse up - Registerkarte x erstellen.

- farbbezogen
So wie Jens angedeutet hat Farbe auslesen und über Case´s die Farbzahlen in Bereiche aufteilen und entsprechende Events oder States anfahren.

Gruß
Ralf


Abbildung auf Frontpanel als "ImageMap" implementieren - jg - 08.06.2009 15:21

Naja, für die Sequenzierung bei der Größenskalierung habe ich durch den Errorcluster gesorgt. Das Schreiben in das Picture-Control erfolgt ohne Sequenz theoretisch zu einem beliebigen Zeitpunkt, aber unabhängig von der While-Loop, und somit "parallel". Es wird also auf jeden Fall recht schnell gesetzt. Wenn du ganz sicher gehen willst, kannt du natürlich auch in die PropertyNode "Value" schreiben, denn die PropertyNode verwendest du sowieso schon, also ist der zusätzliche Overhead egal. (einziger kleiner Nachteil: zwecks meines Wissens nach immer noch bestehenden Bugs erzeugt erzeugt eine aufgezogene PropertyNode nicht nur ein FP-Update, sondern für jeden einzelne einen. Ich hoffe, dass war verständlich ...)

Gruß, Jens

@rasta: Nette Idee, aber damit wären wir wieder bei nur rechteckigen Bereichen.