2012-02-13 43 views
1

我設計了一個GUI與uitabs。當所選標籤更改時,我想實現平滑過渡(光學效果)。對於它,我寫了下面的回調:Matlab GUI設計光學效果(過渡)

function SelectionChangeCbk(src,evt) 
    oldTab = evt.OldValue; 
    newTab = evt.NewValue; 
    set([oldTab,newTab],'Visible','off'); 
    drawnow; 
    pause(2); 
    set(newTab,'Visible','on'); 


    end 

不過,我可以讓我的目標,因爲這不工作(我有兩個選項卡進行更改之前選定的選項卡被稱爲oldTab和新的選項卡,選中後。這個改變叫做newTab,我希望當我從oldTab轉換到newTab時,第一個oldTab和newTab變得不可見,然後在newTab出現之前等待兩秒鐘)。

我已經嘗試了應用程序WindowAPI但它只適用於圖柄。

Pd積:下面是完整的代碼:

function AA 
    fh = figure('Units','characters','Position',[-200.2 -77 214.8 46.154],... 
     'Menu','none','Toolbar','none','NumberTitle','off'); 
    movegui(fh,'center'); 
    warning off MATLAB:uitabgroup:OldVersion % turn off warning 
    htab = uitabgroup('Parent',fh,'BackgroundColor','k',... 
     'SelectionChangeCallback',@SelectionChangeCbk); 
    th1 = uitab('parent',htab,'title','Tab#1'); 
    hPan1 = uipanel(th1,'title','Panel1','Units','characters',... 
     'Position',[27.24 27.163 217.92 13.038],'BorderType','line',... 
     'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan1,'Style','text','String','Text#1',... 
     'Units','normalized','Position',[0.117 0.617 0.208 0.128],... 
     'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan1,'Style','edit','String','300','Units',... 
     'normalized','Position',[0.354 0.623 0.228 0.128],... 
     'ForegroundColor','k','BackgroundColor','w'); 
    uicontrol(hPan1,'Style','text','String','Text#2',... 
     'Units','normalized','Position',[0.156 0.248 0.166 0.128],... 
     'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan1,'Style','edit','String','1000','Units',... 
     'normalized','Position',[0.354 0.259 0.228 0.128],... 
     'ForegroundColor','k','BackgroundColor','w'); 
    hPan2 = uipanel(th1,'title','Panel2','Units',... 
     'characters','Position',[27.24 7 217.92 13.038],... 
     'ForegroundColor','w','BackgroundColor','k','BorderType','line'); 
    uicontrol(hPan2,'Style','text','String',... 
     'Text#3','Units','normalized',... 
     'Position',[0.112 0.632 0.215 0.128],'ForegroundColor',... 
     'w','BackgroundColor','k'); 
    uicontrol(hPan2,'Style','edit','String','100','Units',... 
     'normalized','Position',[0.354 0.618 0.228 0.148],'ForegroundColor',... 
     'k','BackgroundColor','w'); 
    uicontrol(hPan2,'Style','text','String','Text#4',... 
     'Units','normalized','Position',[0.171 0.248 0.15 0.128],'FontSize',... 
     9,'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan2,'Style','edit','String','100','Units',... 
     'normalized','Position',[0.354 0.235 0.228 0.148],... 
     'ForegroundColor','k','BackgroundColor','w'); 
    th2 = uitab('parent',htab,'title','Tab#2','Units',... 
     'characters'); 
    hPan3 = uipanel(th2,'title','Panel3','Units','characters',... 
     'Position',[4.248 24.462 217.552 16.923],'ForegroundColor','w',... 
     'BackgroundColor','k'); 
    hPan31 = uipanel(hPan3,'title','Panel 3.1','Units','normalized',... 
     'Position',[0.017 0.13 0.496 0.816],'ForegroundColor','w',... 
     'BackgroundColor','k','BorderType','line'); 
    uicontrol(hPan31,'Style','text','String','Text311','Units',... 
     'normalized','Position',[0.079 0.711 0.34 0.171],'FontSize',9,... 
     'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan31,'Style','edit','String','1000',... 
     'Units','normalized','Position',... 
     [0.455 0.8 0.242 0.099],'ForegroundColor','k',... 
     'BackgroundColor','w'); 
    uicontrol(hPan31,'Style','edit','String','1000',... 
     'Units','normalized','Position',[0.455 0.451 0.241 0.133],... 
     'ForegroundColor','k','BackgroundColor','w'); 
    uicontrol(hPan31,'Style','text','String','Label','Units','normalized',... 
     'Position',[0.741 0.437 0.101 0.151],'ForegroundColor',... 
     'w','BackgroundColor','k'); 
    uicontrol(hPan31,'Style','edit','String','4','Units',... 
     'normalized','Position',[0.862 0.458 0.1 0.133],'ForegroundColor',... 
     'k','BackgroundColor','w'); 
    hPan32 = uipanel(hPan3,'title','Panel 3.2','Units',... 
     'normalized','Position',[0.53 0.13 0.231 0.816],... 
     'ForegroundColor','w','BackgroundColor','k','BorderType',... 
     'line'); 
    uicontrol(hPan32,'Style','text','String','TEXT34',... 
     'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],... 
     'FontSize',9,'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan32,'Style','edit','String','10',... 
     'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',... 
     9,'ForegroundColor','k','BackgroundColor','w'); 
    hPan33 = uipanel(hPan3,'title','Panel 3.3','Units',... 
     'normalized','Position',[0.778 0.13 0.205 0.816],... 
     'ForegroundColor','w','BackgroundColor','k','BorderType','line'); 
    uicontrol(hPan33,'Style','text','String','TEXT34',... 
     'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],... 
     'FontSize',9,'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan33,'Style','edit','String','10',... 
     'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',... 
     9,'ForegroundColor','k','BackgroundColor','w'); 
    hPan4 = uipanel(th2,'title','Panel 4','Units','characters',... 
     'Position',[4.248 0.831 264.228 27],'ForegroundColor','w',... 
     'BackgroundColor','k'); 
    hPan41 = uipanel(hPan4,'title','Panel 4.1','Units','normalized',... 
     'Position',[0.012 0.521 0.3 0.48],'ForegroundColor','w',... 
     'BackgroundColor','k','BorderType','line'); 
    uicontrol(hPan41,'Style','text','String','TEXT34',... 
     'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],... 
     'FontSize',9,'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan41,'Style','edit','String','10',... 
     'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',... 
     9,'ForegroundColor','k','BackgroundColor','w'); 
    % Subpanel "Intervalo de análisis" 
    hPan42 = uipanel(hPan4,'title','Panel 4.2','Units',... 
     'normalized','Position',[0.012 0.02 0.3 0.48],'ForegroundColor','w',... 
     'BackgroundColor','k','BorderType','line'); 
    uicontrol(hPan42,'Style','text','String','TEXT34',... 
     'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],... 
     'FontSize',9,'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan42,'Style','edit','String','10',... 
     'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',... 
     9,'ForegroundColor','k','BackgroundColor','w'); 
    hPan43 = uipanel(hPan4,'title','Panel 4.3',... 
     'Units','normalized','Position',[0.324 0.02 0.261 0.98],... 
     'ForegroundColor','w','BackgroundColor','k','BorderType','line'); 
    uicontrol(hPan43,'Style','text','String','TEXT34',... 
     'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],... 
     'FontSize',9,'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan43,'Style','edit','String','10',... 
     'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',... 
     9,'ForegroundColor','k','BackgroundColor','w'); 
    hPan44 = uipanel(hPan4,'title','Panel 4.4',... 
     'Units','normalized','Position',[0.597 0.02 0.391 0.98],... 
     'ForegroundColor','w','BackgroundColor','k','BorderType','line'); 
    uicontrol(hPan44,'Style','text','String','TEXT34',... 
     'Value',0,'Units','normalized','Position',[0.094 0.483 0.443 0.133],... 
     'FontSize',9,'ForegroundColor','w','BackgroundColor','k'); 
    uicontrol(hPan44,'Style','edit','String','10',... 
     'Units','normalized','Position',[0.63 0.47 0.275 0.133],'FontSize',... 
     9,'ForegroundColor','k','BackgroundColor','w'); 

    function SelectionChangeCbk(src,evt) 
    oldTab = evt.OldValue; 
    newTab = evt.NewValue; 
    set([oldTab,newTab],'Visible','off'); 
    drawnow; 
    pause(2); 
    set(newTab,'Visible','on'); 


    end 
    end 
+1

你是什麼意思「然而,我可以得到我的目標(這不起作用)。」? – 2012-02-13 16:27:02

+0

難道你不喜歡某種軟轉換,而不是暫停? – 2012-02-13 19:31:15

+0

對於很差的解釋,我很抱歉。非常感謝您的意見。 – julian 2012-02-13 19:33:05

回答

1

我不會用。它沒有記錄,它的行爲是未定義的。相反,請考慮使用Matlab Central的GUI Layout toolbox包。順便提一句,通過將屏幕移動到屏幕上遠處的位置來處理可見性(如(-100000,-100000)) - 它似乎比設置可見性更強大。

無論如何,在Matlab GUI中沒有簡單的方法來實現平滑的淡入/淡出過渡,至少沒有記錄過。

+0

非常感謝您的回答和鏈接。 – julian 2012-02-13 20:03:57