|
|
Fragen zum Drag&Drop und Erstellung von Objekten(Linie, |
|
MatlabErlerner |
Forum-Century
|
|
Beiträge: 104
|
|
|
|
Anmeldedatum: 26.06.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2015, 09:19
Titel: Fragen zum Drag&Drop und Erstellung von Objekten(Linie,
|
|
|
|
|
Hallo zusammen,
da meine Gui-Kenntnisse sehr rudimentär sind, wollte ich mal fragen, ob mir jemand folgendes Problem erklären kann.
Und zwar möchte ich per Drag&Drop Objekte (Kästchen und Dreiecke) auf im Fenster platzieren. Es soll wie folgt funktionieren:
1. Zuerst möchte ich eine Linie (die in der Länge durch den Benutzer variabel einstellbar ist) auf der Zeichenfläche platzieren. Hier meine erste Frage, wie realisiere ich es, dass ich eine einfache horizontale Linie auf der figure platzieren kann? Muss ich dazu eine Gerade zeichnen plassen per plot-Befehl?
2. Als nächstes möchte ich ein viereckiges Kästchen oder ein Dreieck (auch hier die Frage, wie realisiere ich das? Eventuell für das viereckige Kästchen eine Leere Textbox als Beispiel?) auf der figure per Drag and Drop platzieren. Das Element soll allerdings erst absetzbar sein, wenn es sich auf/an der Linie befindet. Dann soll es grün werden um dem Nutzer zu signalisieren, dass er es jetzt 'fallen lassen' kann.
Bisher habe ich es so hinbekommen, dass ich die Linie per line-Funktion erstelle (s = line('XData',[0.1 0.9],'YData',[0.5 0.5],'ZData',[1 1],'Color','r','LineStyle','-') ). Das Rechteck habe ich per Textbox erzeugt. Um die Textbox auf der Line absetzen zu können, habe ich in die Bedingung fürs absetzen geschrieben, dass die y-Werte der Linie und der Textbox übereinstimmen müssen. Das Problem ist allerdings nun, dass die Textbox sich frei auf der ganzen figure bewegen kann in ihrem Koordinatensystem, die Line jedoch in einem Plot erstellt wird auf der Figure, der dann wiederrum sein eigenes Koordinatensystem hat. Sprich, wenn die y-Werte übereinstimmen, dann liegen nicht die Linie und die Textbox aufeinander. Ist es möglich, dass sich die Textbox ebenfalls nur in dem Plot der Linie bewegen lässt?
Vielen Dank schonmal für eure Hilfe
Grüße
Max
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 26.06.2015, 09:51
Titel: Re: Fragen zum Drag&Drop und Erstellung von Objekten(Lin
|
|
Hallo MatlabErlerner,
Wenn Du statt der Text-Box ein
patch
oder
surf
nimmst, wird das gleiche Koordinatensystem wie beim LINE-Objekt verwendet. Ein Dreieck ist mit
surf
auch einfach.
Du könntest eine Box auch per
line
erstellen, sie wäre dann halt nicht ausgefüllt.
Gruß, Jan
|
|
|
MatlabErlerner |
Themenstarter
Forum-Century
|
|
Beiträge: 104
|
|
|
|
Anmeldedatum: 26.06.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2015, 10:34
Titel:
|
|
|
|
|
Vielen Dank für die schnelle Antwort Jan
Also mein Ziel ist letztendlich folgendes:
Ich möchte gerne in der Gui (also auf meinem Hauptfester der figure) drei Elemente als static text oder Button haben, die dann heißen sollen: Linie, Dreieck, Kreis. Wenn jetzt der Nutzer per Drag and Drop ein Element sich greift (bspw. zuerst die Linie), dann möchte ich, dass er diese frei in einem definierten Zeichenbereich platzieren kann.
Das ist so das erste Teilsziel.
Als nächstes greift sich der Nutzer bspw. einen Kreis. Diesen soll er allerdings nur an der zuvor platzierten Linie ablegen können. Sprich der Kreis soll mit der Linie 'verankert' sein.
Wie ist dies zu realisieren, wie gesagt, ich habe nahezu keine Erfahrungen in der Gui-Programmierung und auch meine Matlab-Kenntnisse sind noch sehr begrenzt.
Anbei habe ich mal ein Bild angefügt, wie ich mir in etwa das ganze vorstelle, was ich gerade beschrieben habe.
Vielen Dank weiterhin für eure Mühen!
Max
Beschreibung: |
|
Download |
Dateiname: |
DragDrop.png |
Dateigröße: |
28.74 KB |
Heruntergeladen: |
363 mal |
|
|
|
MatlabErlerner |
Themenstarter
Forum-Century
|
|
Beiträge: 104
|
|
|
|
Anmeldedatum: 26.06.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2015, 11:31
Titel:
|
|
Falls jemand anderes auch noch ein paar Tipps/Hilfestellungen parat hat, scheut euch nicht, ich bin um jede einzelne dankbar !
|
|
|
laternenjoe |
Forum-Fortgeschrittener
|
|
Beiträge: 83
|
|
|
|
Anmeldedatum: 25.02.15
|
|
|
|
Wohnort: Bochum
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2015, 11:37
Titel:
|
|
Ich würde das über klick- und mouse_move events machen. Weiß jetzt nicht, wie die in Matlab genau heißen.
|
|
|
MatlabErlerner |
Themenstarter
Forum-Century
|
|
Beiträge: 104
|
|
|
|
Anmeldedatum: 26.06.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.06.2015, 12:54
Titel:
|
|
Okay vielen Dank für die Antwort. Leider habe ich absolut keine Erfahrung mit Klick und MouseMove-Befehlen. Wie würdest du denn grundsätzlich die Linien, Kreise und Dreiecke zeichnen/erstellen? und wie kriege ich es hin, dass diese in dem Bereich der Axes ausschließlich verschiebbar sind?
|
|
|
laternenjoe |
Forum-Fortgeschrittener
|
|
Beiträge: 83
|
|
|
|
Anmeldedatum: 25.02.15
|
|
|
|
Wohnort: Bochum
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.06.2015, 07:23
Titel:
|
|
Also mit fill kann man Polygone plotten, aber in der Matlabhilfe unter Matlab->Graphics->2-D and 3-D Plots sind einige Funktionen. Ka da musste mal suchen oder googeln, da findet sich bestimmt schnell was.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|