|
Matlabber123 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.12.2009, 17:57
Titel: GUI / Image skalierung
|
|
Hallo erstmal!
Habe ein paar Probleme bei der GUI von Matlab. Habe schon paar Stunden investiert aber noch nichts gefunden.
Es geht um folgendes. Ich habe ein figure und axes erstellt. Das Figure hat eine bestimmte größe. Jetzt lade ich ein Image rein im handle von figure. Und er ändert einfach die Größe meines Figures.
Wenn ich die größe jetzt manuell nachstelle, verändert er einfach die Größe des Bildes..
Womit hängt das zusammen und wie lässt sich das unterbinden?
Grüße Alex
Hoffe auf gute antworten
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 18.12.2009, 19:35
Titel:
|
|
Hallo,
je ungenauer die Frage gestellt ist, desto schwieriger wird es mit einer guten Antwort.
-> Wie wird die Figure erstellt, wie die Axes?
Zitat: |
Jetzt lade ich ein Image rein im handle von figure |
-> Wenn, dann sollte das Image doch einer axes zugeordnet sein?
-> Mit welchem Befehl wird das Image angezeigt?
Mit den bisherigen Angaben kann ich das jedenfalls nicht nachvollziehen.
funktioniert wunderbar.
Grüße,
Harald
|
|
|
Matlabber123 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.12.2009, 19:49
Titel:
|
|
|
|
|
Hi,
ja meine Erklärung war vielleicht nicht ganz verständlich, liegt wohl daran, dass ich selber schwierigkeiten habe das zu verstehen.
[code]
handle.fig = figure('MenuBar','none','name','CrazyMaschine','position',[100, 100, 900, 800],'Resize','off');
handle.axe = axes('Units','Pixel','Position',[50,100,600,600],'Visible','on');
hold on
axis([0,600,0,600]);
handle.basketball = imread('basketball.jpeg');
image(10,10,handle.basketball);
so funktioniert alles, mein basketball ist jetzt z.b. 68x68 pixel und er wird richtig skaliert angezeigt..
zu meinem Problem:
Also ich will verschiedene Images einfügen, diese sollen jedoch sich nachher jedoch bewegen. Ist mein Ansatz dafür gut? Es werden nachher mehrere Objekte noch eingefügt und auch wieder gelöscht.
Das Problem ist ja, dass wenn ich basketball bewegen will ,muss ich das alte Image löschen und ein neues erstellen damit ich die Position verändern kann oder?
Gibt es eine möglichkeit ein Objekt für ein Image so wie Figure zu erzeugen wo man die position angeben kann?
(Vlt. soll sich das Bild nachher sogar drehen..)
Grüße
Matlabber123
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 18.12.2009, 20:35
Titel:
|
|
|
|
|
Hallo nochmal,
Zitat: |
Also ich will verschiedene Images einfügen, diese sollen jedoch sich nachher jedoch bewegen. Ist mein Ansatz dafür gut? Es werden nachher mehrere Objekte noch eingefügt und auch wieder gelöscht. |
Tendentiell ja. Ich würde jedoch mit 'Units', 'normalized' arbeiten. Dann ist man nicht von der Bildschirmauflösung abhängig.
Zitat: |
Das Problem ist ja, dass wenn ich basketball bewegen will ,muss ich das alte Image löschen und ein neues erstellen damit ich die Position verändern kann oder? |
Würde ich nicht. Ich würde lediglich die Eigenschaft 'Position' der zugehörigen Axes ändern. Für mein Beispiel von oben:
Natürlich wirst du dann wie in deinem Beispiel angedeutet mit vernünftigen Handles arbeiten müssen, um alle Bilder zu unterscheiden.
Zitat: |
Gibt es eine möglichkeit ein Objekt für ein Image so wie Figure zu erzeugen wo man die position angeben kann? |
Die Frage muss man auch erst mal verstehen. Wenn ich sie richtig verstehe: Image ist immer in einem Axes, und bei dem Axes kannst du die Position angeben ( und damit auch das Bild verschieben).
Zum Rotieren von Bildern gibt es IMROTATE (in der Image Processing Toolbox).
Grüße,
Harald
|
|
|
Matlabber123 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.12.2009, 21:05
Titel:
|
|
Hi, danke erstmal für die antwort! hat mir schon viel geholfen
mein problem was ich hatte war, dass es nicht 'Position' für mein Image gab, sodass ich das Image durch verändern der Position bewegen kann.
Ich habe jetzt XData und YData gefunden, was dem entspricht, sodass ich z.b. beides +1 rechnen kann und das Image hat sich bewegt.
Das mit der Axes position ändern funktioniert deshalb nicht, weil ich für jedes objekt kein extra Axe habe sodass ich beim ändern der Position alle Images ändern würde.
Wie funktioniert das genau mit normalized? beziehungsweise einer Bildschirmunabhängiger Programmierung? Wenn sich die größe der Fenster immer ändert ändert wird z.b. aus einem doppelt so großen fenster aus einem Pixel dann 2..
Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 18.12.2009, 22:09
Titel:
|
|
Hallo,
ich denke, es würde einiges erleichtern, wenn jedes Image seine eigenen Axes hat.
'normalized' bedeutet "anteilig vom übergeordneten Objekt. Wenn das übergeordnete Objekt seine Größe ändert, werden die darin enthaltenen mitgezogen. Zu solchen Themen lohnt es sich auch durchaus mal, die Hilfe zu lesen.
Grüße,
Harald
|
|
|
|
|
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.
|
|