LabVIEWForum.de - Cursopos. ueber Bild

LabVIEWForum.de

Normale Version: Cursopos. ueber Bild
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

wie bekomme ich raus, über welchen Pixel eines Bildes der Cursor ist? Obwohl ich den Zoom des Bildes auf 1 gesetzt habe, ist da eine Skalierung (siehe Anhang, LabVIEW Version 8.5.1).

Ici habe versucht, eine Line zu zeichen an der Stelle, wo der Cursor ist. Klappt nicht, die Linie ist versetzt.

Danke! C.
' schrieb:Ici habe versucht, eine Line zu zeichen an der Stelle, wo der Cursor ist. Klappt nicht, die Linie ist versetzt.

TIP: Wenn du das Bild in die linke obere Ecke machst, dann stimmts.

Deshalb musst du irgendwie noch was rechnen...Blink
Ah,

habe ich noch garnicht bemerkt. Cool, danke! Eigenschaften->Position->Oben liefert aber immer einen um 20 Pixel zu kleinen Wert. Kann das die Höhe der Beschriftung zusammenhängen?

C.
Such dich mal durch die weiteren Properties des PictureControl.

Etwas unterhalb ist eine Property "Mouse", dann ein wenig Unbundle Cluster und du hast die Koordinaten in X & Y im Einheitensystem des PictureControl (inkl. ZoomFaktor!) und nicht vom FP.

[attachment=12559]

MfG, Jens
Geht, danke, Klasse!

C.
Hallo,

ein Problem noch. Obwohl die Grafik quadratisch ist, wird sie gestaucht dargestellt. Und auch der Wert für die Höhe des Zeichenberechs ist zu klein. Was kann das sein?

Ich habe mal die Demo gezippt angehangen (LabVIEW 8.5.1).

Danke - C.
[attachment=12590]
Sehr seltsam, eigentlich hat der LV-Image-Type keine unabhängigen Zoom-Faktoren für X & Y-Richtung, das kommt erst bei den Vision-Images. Keine Ahnung, weshalb, wieso...Hmm

Behebung: Picture einfach durch ein Neues ersetzen (Im einfachsten Fall Rechtsklick -> Replace -> Neues Picture auswählen).

Dann einige Kritikpunkte:

1. Höhe & Breite bei deinem "Generate Image" sind vertauscht definiert.
2. Wieso verwendest du immer das Construct "Reference"->PropertyNode, anstatt direkt die PropertyNode eines Controls zu erzeugen? Bedenke, PropertyNodes haben schon einen ganz schönen Overhead, per Referenz soll es noch schlimmer sein.
3. Bitte NIE ein Control mit leerem Label anlegen (In deinem Fall der Graph). Alle Local Variables, PropertyNodes etc. können dann im Blockdiagramm durch den Progammierer nicht eindeutig zugeordnet werden. Wenn kein Label im FP sichtbar sein soll, dann per Mausklick->Visible->Label verstecken, aber bitte nicht löschen. No
4. Bei solchen Konstrukten wird mir grundsätzlich schlecht: Array erst per "Array to Cluster" wandeln und dann per Unbundle aufschlüsseln.:flop:Wieso nicht gleich per Index Array entsprechendes Element rausgreifen? (Hier hast du auch den Breite-Höhe-Fehler).
Das sieht dann z.B. so aus:
[attachment=12594]
5. Nur ein Hinweis, die PropertyNodes Height & Width, die du in deinem SubVI "DrawLines" verwendest, sind die Gesamtgröße des Controls (also inclusive Rahmen, Titel (Label & Caption) usw). Ich nehme an, du wolltest eher die Größe des Zeichenbereiches (->PropertyNode Draw Area Size) oder sogar die Größe des Bildes (-> Größe deines Arrays) verwenden.

MfG, Jens
Danke, Problem gelöst.

Deine Bemerkungen habe ich auch alle beherzigt. Danke für die Hinweise!

Eine Frage noch: Wie kann ich erreichen, dass der Plotbereich genau linksbündig ausgerichtet ist mit dem Bild? Die Breite kann ich ja so einstellen, wie es in Deinem Bild dargestellt ist. Aber ich finde irgendwie nichts, um die x-Position des Bildes zu lesen und die x-Position des Plotbereiches zu setzen.

Danke!

C.
Auto Adjust Scales hast du ja schon ausgeschaltet, gut.

Ansonsten:
Zeitung2 LESEN.

Direkt über der der PropertyNode "Plot Area" ist doch die PropertyNode PlotAreaBounds?!

Und beim Picture Control musst du halt ein wenig tricksen:
PropertyNode gibt dir die Breite inklusive Rahmen (solange Label/Caption nicht links oder rechts stehen).
PropertyNode Position gibt dir linke obere Ecke.
PropertyNode DrawAreaSize gibt dir die Größe der "inneren" Zeichenfläche.
Also linke Ecke des Bildanfangs = "Position->Left" + (Breite gesamt - Breite Zeichenfläche)/2
Das natürlich unter der Annahme, das der Rahmen des Controls wirklich symmetrisch ist und wie schon gesagt die Caption/Label nicht links oder rechts übersteht.

Alternativ: Vorher sauber per Hand ausrichten, dann musst du gar nichts machen.

MfG, Jens
Referenz-URLs