2017-01-05 55 views

回答

1

簡而言之:

這可能是因爲該標誌已創建GUI後,並且不使用guide說,相反,似乎工具,用於創建 整個GUI手動添加。

在細節:

要顯示在GUI的圖像,有必要在GUI第一添加axes到 ,然後,通過使用imshow功能的圖像附加。

在一個「標誌」的情況下,被認爲是diplayed作爲GUI打開 而不是GUI的執行期間進行修改,一個可能性是插入 以下代碼:

imshow('my_logo_image.jpg') 

在GUI的OpeningFcn這是在hweufhef變得可見之前執行的。

不幸的是,你的GUI的.m文件不是這種情況。

很難理解整個GUI,尤其是徽標 是如何構建的,但是,可以對GUI進行一些考慮。

開口與guide工具的圖形用戶界面,這是它如何出現:

enter image description here

您可以注意到在左下角的軸,這是其中 出現的標誌的地方。

到目前爲止這麼好。現在

,在axes雙擊打開Property Inspector:你會 通知一些奇怪:axestag屬性爲空。

這很奇怪,因爲guide會自動爲每個項目添加一個默認Tag屬性 。現在

在已經取得的GUI

  • 雙擊的備份副本上不包含任何uicontrol GUI的任何一點, 這將打開Property InspectorFigure
  • HandleVisibility屬性並將其設置爲on
  • 保存GUI
  • 關閉GUIDE工具

現在運行GUI形成CommandWindow(fsolveGUI),然後,再在 CommandWindow運行以下命令:

gui_handels=guidata(gcf) 

功能guidata將返回對象的handels在GUI 。

這是輸出:

gui_handels = 

    figure1: [1x1 Figure] 
     edit1: [1x1 UIControl] 
Untitled_1: [1x1 Menu] 
    text11: [1x1 UIControl] 
Untitled_2: [1x1 Menu] 
     File: [1x1 Menu] 
pushbutton1: [1x1 UIControl] 
     edit3: [1x1 UIControl] 
     text8: [1x1 UIControl] 
     text7: [1x1 UIControl] 
     text3: [1x1 UIControl] 
     edit2: [1x1 UIControl] 
     text1: [1x1 UIControl] 
    copyto: [1x1 Menu] 
    pastefrom: [1x1 Menu] 
     mfile: [1x1 Menu] 
openResults: [1x1 Menu] 
SaveResults: [1x1 Menu] 
loadeqfile: [1x1 Menu] 
    output: [1x1 Figure] 

你會發現一些奇怪的事情

  • 的GUI包含軸
  • 其財產HandleVisibilityon(您可以使用guide檢查)
  • 然而,它不存在於l在handles的IST由guidata

返回你可以得到這個misterious axeshandle用這個命令:

logo_ax_handle=findobj(gcf,'type','axes') 

現在可以訪問在軸繪製與此命令

axes_data=logo_ax_handle.Children.CData;   
數據

你會得到一個54x192x3 unit8矩陣,其實就是Logo。

您可以驗證它,如下所示:

figure 
axes 
imshow(axes_data) 

考慮到所有這strannge thisngs,可能回答你的問題 可以是:

  • 的GUI已經沒有軸,並與創建該圖的HandleVisibiliton
  • 軸已被手動添加到GUI而不使用guide工具
  • 圖像時,標誌,已被添加到軸
  • 的GUI已經保存與savefig功能
  • 的GUI已經被打開與guide
  • 該圖的HandleVisibility properety已被設置爲callback

如下您可以測試這種可能性:

  • guide米,創建具有一個圖形用戶界面,例如,僅僅一個pushbuttoneditbox, 正好有內部
  • 設置HandleVisibility properety「東西」 FO的figureon
  • 保存GUI(在下面的例子中,我「已經把它add_axes_manually 和關閉guide

然後運行下面的代碼,E。 G。從腳本(更改圖像的名稱)

add_axes_manually 
guidata(gcf) 
axes('unit','normalized','position',[0.08 0.4 0.3 0.3]) 
imshow('Jupiter_New_Horizons.jpg') 
savefig('add_axes_manually.fig') 
add_axes_manually 
guidata(gcf) 

從兩個調用的輸出guidata你會發現:

  • 軸的手柄沒有diplayd
  • 的GUI現在包含Logo(圖片)
  • Logo嵌入在GUI中,顯然,既沒有 .jpeg文件也沒有代碼將徽標插入.m文件

該GUI已保存的事實「外」的guide工具似乎被,當你打開它時,會顯示一些方程支持的事實 ,而他們 在.m文件的GUI不存在。

希望這有助於

Qapla」

+0

謝謝您的幫助。這很好解釋。發佈我的問題之前,我發現奇怪的軸兒童(cdata),但我沒有找到一種方法來手動添加它。你的解決方案非常聰明。 – soft001

+0

不客氣!快樂我一直在使用你。 –

0

基本上有two ways to construct GUIs in MATLAB

  1. 搭配指南
  2. 編程

GUIDE允許您創建和位置uicontrol S和以圖形方式的其他對象。當部署GUI時,GUIDE爲M文件中的uicontrol回調生成函數,併爲FIG文件包含所有uicontrol和您可能包含在GUI中的其他圖形對象的所有數據。使用此用簡單的佈局設計和簡單的uicontol行爲的GUI(讀:你永遠不會創造 GUI)的

當編程做的事情,你必須自己做的一切 - uicontrol定位,回調,標識和定位顯示,一切。沒有FIG文件可以幫助你(通常),只有你寫的M文件。如果你想/需要對uicontrol行爲,多個子GUI,選項卡,MATLAB和uicontrol之間的複雜交互以及什麼都不需要絕對控制,請使用此選項。做得很難,但是它給了你絕對的控制權。

您鏈接到的GUI顯然是使用GUIDE創建的。 PNG/JPG /無論嵌入在FIG文件中。