Matlab_GUI學習筆記(三)——常用物件的屬性之Figure

Ucarrot發表於2020-12-01

Matlab_GUI學習筆記(三)——常用物件的屬性之Figure


1. Figure

使用get函式可以方便檢視各個物件的屬性,一些屬性可以直接通過名稱來大體判斷其作用,比如Figure的CloseRequestFcn屬性,即為關閉窗體時要呼叫的函式;CurrentCharacter屬性為當前的字元,即窗體如果能夠響應鍵盤事件,通過這個屬性來獲得我們按下的是哪一個鍵。

>>get(figure)
                 Alphamap: [1×64 double]
             BeingDeleted: 'off'
               BusyAction: 'queue'
            ButtonDownFcn: ''
                 Children: [0×0 GraphicsPlaceholder]
                 Clipping: 'on'
          CloseRequestFcn: 'closereq'
                    Color: [0.9400 0.9400 0.9400]
                 Colormap: [64×3 double]
                CreateFcn: ''
              CurrentAxes: [0×0 GraphicsPlaceholder]
         CurrentCharacter: ''
            CurrentObject: [0×0 GraphicsPlaceholder]
             CurrentPoint: [0 0]
                DeleteFcn: ''
             DockControls: 'on'
                 FileName: ''
        GraphicsSmoothing: 'on'
         HandleVisibility: 'on'
            InnerPosition: [488 342 560 420]
            IntegerHandle: 'on'
            Interruptible: 'on'
           InvertHardcopy: 'on'
              KeyPressFcn: ''
            KeyReleaseFcn: ''
                  MenuBar: 'figure'
                     Name: ''
                 NextPlot: 'add'
                   Number: 2
              NumberTitle: 'on'
            OuterPosition: [481 334.6000 574.4000 457.6000]
         PaperOrientation: 'portrait'
            PaperPosition: [3.0917 9.2937 14.8167 11.1125]
        PaperPositionMode: 'auto'
                PaperSize: [21.0000 29.7000]
                PaperType: 'A4'
               PaperUnits: 'centimeters'
                   Parent: [1×1 Root]
                  Pointer: 'arrow'
        PointerShapeCData: [16×16 double]
      PointerShapeHotSpot: [1 1]
                 Position: [488 342 560 420]
                 Renderer: 'opengl'
             RendererMode: 'auto'
                   Resize: 'on'
               Scrollable: 'off'
            SelectionType: 'normal'
           SizeChangedFcn: ''
                      Tag: ''
                  ToolBar: 'auto'
                     Type: 'figure'
            UIContextMenu: [0×0 GraphicsPlaceholder]
                    Units: 'pixels'
                 UserData: []
                  Visible: 'on'
      WindowButtonDownFcn: ''
    WindowButtonMotionFcn: ''
        WindowButtonUpFcn: ''
        WindowKeyPressFcn: ''
      WindowKeyReleaseFcn: ''
     WindowScrollWheelFcn: ''
              WindowState: 'normal'
              WindowStyle: 'normal'
  • CloseRequestFcn
    從上面get的結果可以看到,CloRequestFcn直接指向closereq函式,即可以通過呼叫這個函式來關閉窗體。下面我們在figure裡面建立一個按鈕來實現這一功能。

    hf = figure;
    hb = uicontrol('Style', 'pushbutton', 'Callback', 'closereq');
    
  • Color
    窗體的顏色屬性,可以控制以改變窗體的顏色,引數可以為字元或者RGB數值。

    set(hf, 'Color', 'w')			%將顏色設定為白色
    
  • CurrentAxes
    如果在窗體裡面新增了Axes子物件,那CurrentAxes指向的就是當前的座標軸物件的控制程式碼。

  • CurrentCharacter
    如果窗體能夠響應鍵盤事件,那CurrentCharacter指向的就是當前的鍵值。

  • CurrentObject
    如果在CurrentAxes中放了一個曲線,那CurrentObject指向的就是當前的曲線物件。

  • CurrentPoint
    CurrentPoint為滑鼠當前指向的位置。

  • Menubar
    Menubar為窗體的選單欄,預設為figure,即我們常見的預設選單欄,如果自己建立的視窗不想要這一欄,可以通過set函式修改其屬性。

    set(hf, 'Menubar', 'none');
    
  • Name&NumberTitle
    NameNumberTitle可以配合使用為窗體命名。如預設設定為Figure 1

    set(hf, 'NumberTitle', 'off', 'Name', 'Instance' );
    
  • Nextplot
    Nextplot指示下一次繪圖時,是覆蓋掉原來的影像重新繪製,還是在原來的基礎上直接新增。

  • Position&Units
    PositionUnits一般配合使用。如果將單位設定為歸一化,那麼位置的引數設定在0-1之間,即取的是相對位置,則可以在不同解析度的螢幕上有一個較為統一的佈局。

    set(hf, 'Units', 'Normalized', 'Position', '[0.2,0.2,0.6,0.8]);
    
  • Resize
    顧名思義Resize指示窗體能否通過滑鼠的點選拖拽再次調整大小。將屬性設定為off,則不能再調整窗體大小。

    set(hf, 'Resize', 'off');
    
  • Window…(series)
    Window開頭的這幾個回撥函式,基本功能大同小異,下面以WindowButtonDownFcnWindowKeyPressFcn結合closereq函式為例說明如何使用:

    set(hf, 'WindowButtonDownFcn', 'closereq');
    set(hf, 'WindowKeyPressFcn', 'closereq');
    

    滑鼠在窗體任意位置點選或者在鍵盤上按下任意鍵將會使窗體關閉。

  • WindowStyle
    設定視窗模式,可以將其設定為對話方塊模式,即點選螢幕任意無關位置視窗不能關閉。

    set(hf, 'WindowStyle', 'modal');
    
  • Visable
    窗體是否可見,用於一些呼叫多個子視窗的程式中,避免一次開啟並顯示很多視窗。

    pause(3)
    set(hf, 'Visable', 'off')
    pause(3)
    set(hf, 'Visable', 'on')
    

相關文章