Mein Programm öffnet ein BildWie behalte ich Textobjekte in einem Matlab-Achsenfenster beim Öffnen eines neuen Bildes?
pic_handle = imshow('pic.bmp');
fügt dann Text
text(x, y, 'my text');
text(x2, y2, 'more text');
dann später auf den Benutzerobjekten ein anderes Bild auswählen zu öffnen, die
imshow('pic2.bmp');
delete(pic_handle);
zu
führt Und jetzt All mein Text verschwindet. Nachdem ich ein wenig herumgestöbert habe, sehe ich, dass die Anzeigeliste gelöscht wurde und die Handles zu den Textobjekten scheinbar ungültig sind (nicht ganz sicher).Meine Frage ist, ob es eine Möglichkeit gibt, den Text zu bewahren? dh ein neues Bild im Achsenobjekt öffnen, ohne die Anzeigeliste wegzublasen?
kurz nach der Veröffentlichung dämmerte es mir, dass "festhalten" würde den Trick tun, wie Sie vorschlagen. Interessanterweise wird das neue Bild * nicht * über dem Text platziert. Die Uistack-Befehle werden nicht benötigt. Ich bin mir nicht einmal sicher, ob sie in diesem Zusammenhang funktionieren würden, denn das Problem ist die Anzeigereihenfolge der Kinder des Achsenfensters. Nach dem, was ich in anderen Posts gelesen habe, besteht die Möglichkeit, das Array von Kindern neu zu ordnen. – Llaves
Es scheint so zu sein, was "uistack" tut, das Array von Kindern neu anzuordnen. – jodag
Ich habe mir kurz die Quelle von Uistack angeschaut und das ist es auch. Aber es gibt auch andere "Regeln". Wie ich im obigen Kommentar notiert habe, ist das neue Bild * nicht * über den zuvor gezeichneten Textobjekten. In der Tat habe ich versucht, das Bild mit 'uistack' nach oben zu bewegen und es hat keine Wirkung. Eine der Regeln ist offensichtlich, dass das Bild unten im Rendering-Stack liegen muss. – Llaves