2016-02-09 46 views
0

在圖中,我使用line命令創建了一個線對象。它不能被拖動。然後我使用GUI插入一條線,該線產生了一個線形對象。我可以拖動它。這並不方便,因爲我的代碼根據所選形狀和線對象的垂直線生成許多線對象。最好能夠拖動代碼生成的線對象,而不是必須手動插入多個線形對象,以便可以拖動它們。使手動插入的線型更不吸引人的是,我將繪製它們不是完美的垂直,然後我必須進入「X」字段值以使其完美垂直。無論如何,使一個Matlab線對象移動沒有太多的代碼?

是否存在將線對象轉換爲線形對象的編程方式?我正在尋找一種不涉及大量代碼的解決方案。

+0

什麼是'linehape'對象? – excaza

+0

另請參見:['draggable'](http://www.mathworks.com/matlabcentral/fileexchange/4179-draggable) – excaza

+0

如果使用圖形菜單插入直線,則該對象的類型字段爲線形。也許這是一個內部無證課程。我很欣賞你的可拖動鏈接。將採取看看。謝謝。 – user36800

回答

0

感謝excaza爲我指出draggable解決方案。請注意,圖的Edit plot模式必須停用,以便指定的對象可拖動。

對我來說,這比使用圖形的原生Insert Line對象更好,它本質上是可移動的,但如果您需要使用端點座標,這也會帶來挑戰。基本上,查詢的X屬性值似乎是根據軸normalizedUnits而不是x軸本身的標度(如xlim所定義)。

我還發現好奇 - 插入行對象沒有XData屬性,儘管我已經處理的所有其他對象都是這樣做的,即由行命令產生的對象和補丁。但是,所有後面的對象也是返回值爲get(句柄,X),並且這些值與XData中的值相匹配。在我發現這個之前,我認爲X可能是用於標準化的座標,而XData可能是針對軸的xlimylim範圍的座標。

最後,另一個有趣的細節是線對象是圖形的子對象而不是軸。當它們被選中時,它們不會出現在findall(gco(gca),'Selected','on')中,但它們確實出現在findall(gco(gcf),'Selected','on')中。奇怪的,因爲它們的座標是相對於軸線的。我想知道如果不同軸上的線對象具有相同的座標,它們是如何區分的。

相關問題