WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

GUI / Image skalierung

 

Matlabber123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2009, 17:57     Titel: GUI / Image skalierung
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.12.2009, 19:35     Titel:
  Antworten mit Zitat      
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.
Code:
figure
axes('units', 'normalized', 'position', [0.1 0.1 0.4 0.4])
imagesc(membrane)

funktioniert wunderbar.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlabber123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2009, 19:49     Titel:
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.12.2009, 20:35     Titel:
  Antworten mit Zitat      
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:
Code:
set(gca, 'position', [0.2 0.2 0.4 0.4])

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlabber123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2009, 21:05     Titel:
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.12.2009, 22:09     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.