歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

X windows系統使用指南(十二)

  第14章 定義和使用位元映像 一個位元映像是一個小圖,說得更清楚一點,一個圖的顯現是由像素組成,而像素又是由一個位元來對應,當位元為”1 ”時,像素為”黑色”,而當位元為”0 ”時,像素為”白色”。X有許多的公用程式來管理位元映像,你可以用不同的方法來建立、編輯和儲存它們。有一些使用者程式允許你直接使用它們。(其它大部份的程式則以內部的形式使用它們,這些公用程式大都放在X程式庫中,使得使用者撰寫程式時很容易便可加以運用。) 本章開始先描述位元映像的工具,接下來實際使用xsetroot程式,它可以讓你定制你的螢幕,設定一個位元映像的背景,選擇你的色彩和指定一個位元映像當作游標來使用。 14.1 系統位元映像程式館 位元映像檔案的程式館被當作系統的一部份提供給你,預設儲存在這個目錄: /usr/include/x11/bitmaps 但在你的工作站上或許不同,問一下你的系統的裝置者,我們將以此目錄為准,並用其中的一些檔案作為本章的范例。 14.2 交談式地編輯一個位元映像 -- bitmap bitmap程式是一個讓你以交談式建立或編輯位元映像的工具,它將位元映像以方格子來表示,每一個格子代表一個像素,你可以用滑鼠設定或清除像素。 14.2.1 啟動bitmap 透過bitmap你可以編輯一個包含有一個位元映像的檔案,或從頭開始建立一個位元映像並將它儲存為檔案。不論是何者,當你啟動bitmap時,你需要給一個檔案名稱,不論是現存的檔案或是新建的檔案。 當建立一個新的位元映像時,你可以選擇性地指定大小(寬度X 長度個像素),如果你未指定,預設大小為16X16 。舉例來說,假如我們想要建立一個比較大一點的十字型數位映像,我們可以用下面的命令列: bitmap big-cross 40X50 & 14.2.2 使用bitmap 假如我們要編輯一個現存的檔案,可以用下面的命令列啟動程式: bitmap /usr/include/x11/bitmaps/cntr-ptr 則一個像圖14-1的視窗出現在螢幕上,右下角以實際大小顯示出目前位元映像的狀態,另一個則為反相(reverse) 的位元映像,其它在右邊的”盒”你可以用碰觸滑鼠按鈕的方式來操作它們。 用三鈕滑鼠編輯圖形最簡單的方法: 設定像素:在一個像素上碰觸滑鼠左按鈕,或者是按住左按鈕並拖拽它,每一個經過的像素方格均會被設定,直到松開按鈕為止。 清除像素:和上述相同的方法,但是以滑鼠右按鈕代替。    反轉(invert)像素:在一個像素上碰觸滑鼠中按鈕(也就是黑的像素被清除而白的像素被設定),當你按住中按鈕並拖拽,所經過的像素格均會反轉。 ┌————————————————————┐ │ p160 fig 14.1 │ │ │ │ 圖14-1 位元映像編輯器 │ └————————————————————┘ bitmap還有其它的面貌:如果你觀察接近箭頭的上端部份(見圖14-2的放大圖),你可以在其中的一個方格中看到有一個小菱形,這代表了熱點(hotspot),當bitmap被用來建造一個游標時會應用到:熱點是游標真正動作的點。指向型的游標,熱點通常在頂端,而圓形或方形的游標,熱點則在中心。(你可以用Set Hot Spot和Clear Hot Spot兩個命令來更改熱點的位置或消去它) 當你結束了你的更改動作,可以用碰觸Write Output將位元映像儲存至檔案,但不會離開bitmap程式。 ┌————————————————————┐ │ p161 fig 14.2 │ │ │ │ 圖14-2 一個游標的”熱點” │ └————————————————————┘ 離開程式,碰觸Quit,如果你編輯了位元映像卻試圖在未儲存前離開程式,你將會得到提示以確定你是否真要如此做。 14.2.3 畫形狀(shapes) bitmap有數個功能使得畫圖更容易: 畫一條線:碰觸Line,游標會變成一個大黑點,在所欲畫的線的一端碰觸一下按鈕,而後在另一端也碰觸一下,bitmap會畫出這條線。 畫一個中空的圓:碰觸Circle,同樣地,游標變成一個大黑點,在你所欲畫圓的圓心碰觸一下,而後在所欲畫圓之圓周上的任一點碰觸一下,bitmap將畫出這個圓的圓周。 畫一個填滿的圓:碰觸Filled Circle ,其馀同上。 14.2.4 在長方形的區域內工作 命令Clear Area、Set Area和Invert Area 必須在長方形區域下操作,長方形區域的決定方式是你在它的左上角以按住滑鼠任意按鈕的方式指定,然後拖拽到右下角,當你拖拽時,目前被指定的區域會以高亮度顯示。 你可以拷貝、移動或重疊(overlay) 一個區域,你以拖拽的方式指定原始區域,而後在目標區域上的左上角碰觸按鈕,各種命令的動作如下: 拷貝(Copy):目標區域會被消除,而所有對應於原始區域為黑像素的均會被設定。 移動(Move):原始區域和目標區域均被清除,目標區域對應於原始區域為黑像素的均會被設定。


重疊(Overlay) :在目標區域中對應於原始區域被設定的像素均會被設定,其它沒有改變。 14.2.5 一個位元映像的檔案格式 一個位元映像會如同ASCII 文字一樣儲存到檔案中,其格式類似C 語言程式片段。 例如:檔案 /usr/include/X11/bitmaps/cntr_ptr 的內容: #define cntr_ptr_width 16 #define cntr_ptr_height 16 #define cntr_ptr_x_hot 7 #define cntr_ptr_y_hot 1 static char cntr_ptr_bits[]= 0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, 0xe0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, 0x98, 0x19, 0x88, 0x11, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00; 帶有_x_hot和_y_hot的變數僅在熱點被指定後才會包含進來。 更多的細節包含在bitmap(1) 的指南頁中,不過無論如何,你毋需直接以此種格式處理位元映像,任何你想要做的事均有工具程式來處理。 14.3 編輯位元映像其它的方法 bitmap程式對於一個小的圖形工作起來算是相當方便,但它有一些缺點: .它不接受較簡單格式的輸入檔,例如像一些由掃描現存圖形所產生的檔案。 .它必需以交談式執行,對一些程序性的編輯動作並不方便。 .你可能希望用它產生一些位元映像來顯示,但它無法在非X系統上執行。 要克服上述的問題,需要以字元圖(character picture) 的形式來建立位元映像,並提供這個格式和bitmap的格式相互轉換的程式。字元圖格式是非常明顯的:每一行的像素用一行的字元來表示,黑的像素用一個指定的字元(預設為# )而白的像素用另一個字元(預設為 -)表示,以cntr_ptr為例,字元圖的格式如圖14-3 ┌————————————————————┐ │ p164 fig 14.3 │ │ │ │ 圖14-3 字元圖格式的位元映像 │ └————————————————————┘ 你能以本文編輯器或其它任何系統上任何其它合適的程式編輯這些圖形,也可以由掃描器(scanner) 或其它影像設備產生。 14.3.1 字元圖和X位元映像間的轉換 X提供了兩個程式作字元圖格式和位元映像格式間的轉換: atobm : 轉換一個字元圖為標准的位元映像。 bmtoa : 轉換一個標准的位元映像為字元圖。 兩個程式均允許你指定以何字元來代表黑和白像素。 14.4 定制你的根視窗 -- xsetroot xsetroot 讓你設定你的根視窗的特徵,你可以改變視窗背景的顏色和圖樣(pattern) ,以及視窗所使用的游標。 14.4.1 設定一個背景的位元圖樣 你可以指定任何位元映像來當作你螢幕的背景(只要它是X的標准格式), 在 xsetroot 的命令列上,-bitmap 選項跟隨著位元映像的檔案名稱。例如: xsetroot -bitmap /usr/include/X11/bitmaps/mensetmanus 會出現一個精致的背景(見圖14-4)(拉丁語 Mens et Manus (mensetmanus)是 M99v的箴言,兩個人物的圖形簡單表現出 M99v的精神。) ┌————————————————┐ │ │ │ P165 Fig 14.4 │ │ │ │圖14 - 4 設定 mensetmanus位元 │ │ 映像為背景圖樣的根視窗 │ └————————————————┘ 14.4.2 設定一個背景游標 如果你不要使用預設的 "大的 X "游標,你可以用選項 -CURSOR 加上cursorbitmap 和 maskbitmap兩個引數來改變它,兩個引數均為位元映像檔案的名稱。例如:設定游標為前節所示的位元映像,使用命令: xsetroot -cursor /usr/include/X11/bitmaps/cntr_ptr /usr/include/X11/bitmaps/cntr_ptrmsk 位元映像的對照圖見圖14-5. ┌————————————————┐ │ │ │ P166 Fig 14.5 │ │ │ │圖14



xsetroot -bitmap /usr/include/X11/bitmaps/mensetmanus 會出現一個精致的背景(見圖14-4)(拉丁語 Mens et Manus (mensetmanus)是 M99v的箴言,兩個人物的圖形簡單表現出 M99v的精神。) ┌————————————————┐ │ │ │ P165 Fig 14.4 │ │ │ │圖14 - 4 設定 mensetmanus位元 │ │ 映像為背景圖樣的根視窗 │ └————————————————┘ 14.4.2 設定一個背景游標 如果你不要使用預設的 "大的 X "游標,你可以用選項 -CURSOR 加上cursorbitmap 和 maskbitmap兩個引數來改變它,兩個引數均為位元映像檔案的名稱。例如:設定游標為前節所示的位元映像,使用命令: xsetroot -cursor /usr/include/X11/bitmaps/cntr_ptr /usr/include/X11/bitmaps/cntr_ptrmsk 位元映像的對照圖見圖14-5. ┌————————————————┐ │ │ │ P166 Fig 14.5 │ │ │ │圖14



Copyright © Linux教程網 All Rights Reserved