Handle與MATLAB程式設計

2003/05/29 23:33:16 By Abin

一、什麼是Handle?

  就字面意義來說,Handle是器具的「把手」,以鍋子為例,把手的用途是方便我們取用鍋子裡的食物;對門而言,我們可透過把手開門。

  在WINDOWS的世界裡,充滿各式各樣的系統資源,如視窗表單、功能表、按鈕、圖片、記憶體、程式、程序...等等,而WINDOWS(作業系統)是這些資源的管理者,而為了有效管理系統資源,WINDOWS會給每一個系統資源一個唯一的識別碼,這個識別碼就叫做Handle。

  WINDOWS中的Handle與真實世界的把手觀念類似,由於每一個Handle都是一個唯一的識別碼,因此當程式要求WINDOWS提供存取各項資源的服務時,就必須出具此一識別碼,如此WINDOWS才可以找到所對應的系統資源,然後進行存取動作。

  Handle最重要的特性是同一時間不會有兩個資源的Handle值是一樣的,所以當我們要求存取某一Handle時,只會有與其相對應的系統資源會讓我們存取。

以上資料參考自「Visual Basic 6.0 與 Windows API 講座」一書,作者:王國榮,旗標出版公司出版

 

二、MATLAB與Handle相關的常用指令

通常我們要在Figure顯示圖片所會用到的指令,都是有Handle值的,只要在前面設一個變數就可以取得Handle值,如:

h=image(X)

h就是X這張影像的Handle值

另外還有要填滿3D物件表面的SURF也有Handle值可以取得,方法同上。

 

不過除了上面那種方法之外,還有兩個較常用的指令----GCFGCA,而這兩個指令的用途如下:

GCF可以取得目前所顯示的Figure的Handle值

GCA則是取得目前Figure裡面正在作用中的AXIS(圖軸)的Handle值

這兩個指令對繪圖而言是很常用到的,但是取得了Handle之後要做什麼呢? 其實取得了Handle之後,可以做的事情可多了,我們可以取得、設定或改變這個物件(系統資源)的一些性質,而要取得某物件的某項性質的值,可以用GET

Value=GET(Handle, Property)    Property就是我們要取得的某項性質

若是要設定某項性質呢,則會用到SET

SET(Handle, Property, Value)

 

但是我們怎麼知道要設定的物件有哪些性質可以讓我們來取得或改變? 其實方法很簡單,只要用SET(Handle)就會在Command Window顯示這物件的所有性質,若是用GET(Handle)則除了性質之外,連目前這些性質的值都會顯示出來。

 

Handle在往後的GUI圖形使用者介面的設計佔很重要的角色,只要Handle的觀念學好,那以後不管要做什麼處理都非常方便;此外,Handle的觀念不管對哪種程式語言都是一樣的,只要會一種,其他的就可以融會貫通啦。