通用函数get和set
這兩個函數在畫圖時很常用,所有對象都有屬性來定義它們的特征,正是通過設定這些屬性來修正圖形顯示的方式。盡管許多屬性所有的對象都有,但與每一種對象類型(比如坐標軸,線,曲面)相關的屬性列表都是獨一無二的。對象屬性可包括諸如對象的位置、顏色、類型、父對象、子對象及其它內容。每一個不同對象都有和它相關的屬性,可以改變這些屬性而不影響同類型的其他對象。和每一種對象類型(圖形,坐標軸,線,文本,曲面,補片和圖象)相關的完整的屬性列表在本章的后面給出。
? 對象屬性包括屬性名和與它們相聯關的值。屬性名是字符串,它們通常按混合格式顯示,每個詞的開頭字母大寫,比如:’ LineStyle ‘ 。但是,MATLAB識別一個屬性時是不分大小寫的。另外,只要用足夠多的字符來唯一地辨識一個屬性名即可。例如,坐標軸對象中的位置屬性可以用 ‘ Position ‘, ‘ position ‘ ,甚至是 ‘ pos ‘來調用。
? 當建立一個對象時,它用一組缺省屬性值,該值可以用兩種方法來改變。可以用{屬性名,屬性值}對來建立對象生成函數;或者在對象建立后改變屬性。
? Hf_1=figure( ‘color’, ‘white’ )
? ?? ? 它用缺省的屬性值建立一個新的圖形窗口,只是背景顏色被設為白色而不是缺省的黑色。
? ?? ? 為了獲得和改變句柄圖形對象的屬性只需要兩個函數。函數get返回某些對象屬性的當前值。使用函數get的最簡單語法是get(handle, ‘ PropertyName’ )。例如:
? ?? ? ? p=get(Hf_1, ‘position’ )
返回具有句柄Hf_1圖形窗口的位置向量。
? ?? ? ? c=get(Hl_a, ‘color’ )
返回具有句柄Hl_a對象的顏色。
? ?? ? 函數set改變句柄圖形對象屬性,使用語法set(handle, ‘PropertyName’ ,value)。例如:
? ?? ? ? set(Hf_1, ‘Position’ ,p_vect)
將具有句柄Hf_1的圖形位置設為向量p_vect所指定的值。同樣
? ?? ? ? set(Hl_a, ‘color’ , ‘r’ )
將具有句柄Hl_a的對象的顏色設置成紅色。
? ?? ? 一般情況下,函數set可以有任意數目的( ‘PropertyName’ ,PropertyValue)對。比如:
? ?? ? ? set(Hl_a, ‘Color’ , ‘r’ , ‘Linewidth’ ,2, ‘LinStyle’ , ‘--’ )
將具有句柄Hl_a的線條變成紅色,線寬為2點,線型為破折號。
? ?? ? 除了這些主要功能,函數set和函數get還能提供幫助。例如? set(handle, ‘PropertyName’ )返回一個可賦給由handle所描述對象的屬性值列表。例如:
? ?? ? ? set(Hf_1, ‘Units’ )
? ?? ? [inches|centimeters|normalized|points|{pixels}]
表明由Hf_1所引用的圖形的 ‘Unites’屬性是五個可允許的字符串,而其中 ‘pixels’ 是缺省值。
? ?? ? 如果指定一個沒有固定值的屬性,那么,MATLAB就會通知如下:
? ?? ? ? set(Hf_1, ‘Position’ )
? ?? ? A??figure’s??‘Position’??property??does??not??have??a??fixed??set??of??property??values。
? ?? ? 除了set命令,句柄圖形對象創建函數(例如figure,axis,line等等)接受多個屬性名和屬性值對。例如:
? ?? ? ? figure( ‘Color’ , ‘blue’ , ‘NumberTitle’ , ‘off’ , ‘Name’ , ‘My??Figure’ )
創建一個圖形窗口,背景為蘭色,標有 ‘My??Figure’ 而不是缺省標題 ‘Figure??No.??1’。
? ?? ? 為了形象說明上述概念,考慮下面的例子:
? ?? ? ? Hf_fig =figure??%??create a figure having an interger handle
? ?? ? Hf_fig=
? ?? ?? ?? ?1
? ?? ? ? Hl_line=line??%??create a line having a floating-pointer handle
? ?? ? Hl_line =
? ? ? ? ??? 173.0037
? ?? ? ? set(Hl_line);??%??list settable properties and potential values
DisplayName
Color
LineStyle: [ {-} | -- | : | -. | none ]
LineWidth
Marker: [ + | o | * | . | x | square | diamond | v | ^ | > | < | pentagram | hexagram | {none} ]
MarkerSize
MarkerEdgeColor: [ none | {auto} ] -or- a ColorSpec.
MarkerFaceColor: [ {none} | auto ] -or- a ColorSpec.
XData
YData
ZData
ButtonDownFcn: string -or- function handle -or- cell array
Children
Clipping: [ {on} | off ]
CreateFcn: string -or- function handle -or- cell array
DeleteFcn: string -or- function handle -or- cell array
BusyAction: [ {queue} | cancel ]
HandleVisibility: [ {on} | callback | off ]
HitTest: [ {on} | off ]
Interruptible: [ {on} | off ]
Parent
Selected: [ on | off ]
SelectionHighlight: [ {on} | off ]
Tag
UIContextMenu
UserData
Visible: [ {on} | off ]
?
? ?? ? ? get(Hl_line);??%??list properties and current property values
? ?? ? Color = [1 1 1]
? ?? ?? ?? ???EraseMode = normal
? ?? ?? ?? ???LineStyle = -
? ?? ?? ?? ???LineWidth = [0.5]
? ?? ?? ?? ???MarkerSize = [6]
? ?? ?? ?? ???Xdata = [0 1]
? ?? ?? ?? ???Ydata = [0 1]
? ?? ?? ?? ???Zdata = [ ]
? ?? ?? ?? ???ButtonDownFcn =
? ?? ?? ?? ???Children = [ ]
? ?? ?? ?? ???Clipping = on
? ?? ?? ?? ???Interruptible = no
? ?? ?? ?? ???Parent = [58.0002]
? ?? ?? ?? ???Type = line
? ?? ?? ?? ???UserData = [ ]
? ?? ?? ?? ???Visible = on
? ?? ? 在上例中,所創建的線條中的 ‘Parent’屬性就是包含線條的坐標軸的句柄。而且所顯示的圖形列表被分為兩組。在空行上的第一組,列出了該對象的獨有屬性,而空行下的第二組列出所有的對象共有的屬性。注意到函數set和函數get返回不同的屬性列表。函數set只列出可以用set命令改變的屬性,而get命令列出所有對象的屬性。在上面的例子中,函數get列出了 ‘Children’和 ‘Type’ 屬性,而set命令卻沒有。這一類屬性只可讀,但不能被改變,它們叫做只讀屬性。
? ?? ? 與每一個對象有關的屬性數目是固定的,但不同的對象類型有不同數目的屬性。象上面所顯示的,一個線條對象列出了16個屬性,而一個坐標軸對象列出了64個屬性。顯然,透徹地說明和描述所有對象類型的全部屬性超出本書的范圍。
? ?? ? 除了函數set和get,MATLAB還提供了另外兩個函數來操作對象和它們的屬性。任意對象和它們的子對象可以用 ? delete(handle) 來刪除。同樣 ? reset(handle) 將與句柄有關的全部對象屬性(除了 ‘Position’ 屬性)重新設置為該對象類型的缺省值。
總結
以上是生活随笔為你收集整理的通用函数get和set的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员面试什么最重要?
- 下一篇: 遮罩层中的相对定位与绝对定位(Ajax)