国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

X Window 系統(tǒng)使用指南--定義和使用位元映像

瀏覽:2日期:2024-02-02 08:44:08

第14章 定義和使用位元映像 一個位元映像是一個小圖,說得更清楚一點,一個圖的顯現(xiàn)是由像素組成, 而像素又是由一個位元來對應(yīng),當(dāng)位元為”1 ”時,像素為”黑色”,而當(dāng)位 元為”0 ”時,像素為”白色”。X有許多的公用程式來管理位元映像,你可 以用不同的方法來建立、編輯和儲存它們。有一些使用者程式允許你直接使用 它們。(其它大部份的程式則以內(nèi)部的形式使用它們,這些公用程式大都放在 X程式庫中,使得使用者撰寫程式時很容易便可加以運用。)

本章開始先描述位元映像的工具,接下來實際使用xsetroot程式,它可以 讓你定制你的螢?zāi)?,設(shè)定一個位元映像的背景,選擇你的色彩和指定一個位元 映像當(dāng)作游標(biāo)來使用。

14.1 系統(tǒng)位元映像程式館

位元映像檔案的程式館被當(dāng)作系統(tǒng)的一部份提供給你,預(yù)設(shè)儲存在這個目 錄:

/usr/include/x11/bitmaps

但在你的工作站上或許不同,問一下你的系統(tǒng)的裝置者,我們將以此目錄為準(zhǔn), 并用其中的一些檔案作為本章的□例。

14.2 交談式地編輯一個位元映像 -- bitmap

bitmap程式是一個讓你以交談式建立或編輯位元映像的工具,它將位元映 像以方格子來表示,每一個格子代表一個像素,你可以用滑鼠設(shè)定或清除像素。

14.2.1 啟動bitmap

透過bitmap你可以編輯一個包含有一個位元映像的檔案,或從頭開始建立 一個位元映像并將它儲存為檔案。不論是何者,當(dāng)你啟動bitmap時,你需要給 一個檔案名稱,不論是現(xiàn)存的檔案或是新建的檔案。

當(dāng)建立一個新的位元映像時,你可以選擇性地指定大小(寬度X 長度個像 素),如果你未指定,預(yù)設(shè)大小為16X16 。舉例來說,假如我們想要建立一個 比較大一點的十字型數(shù)位映像,我們可以用下面的命令列:

bitmap big-cross 40X50 &

14.2.2 使用bitmap

假如我們要編輯一個現(xiàn)存的檔案,可以用下面的命令列啟動程式:

bitmap /usr/include/x11/bitmaps/cntr-ptr

則一個像圖14-1的視窗出現(xiàn)在螢?zāi)簧?,右下角以實際大小顯示出目前位元映像 的狀態(tài),另一個則為反相(reverse) 的位元映像,其它在右邊的”盒”你可以 用碰觸滑鼠按鈕的方式來操作它們。

用三鈕滑鼠編輯圖形最簡單的方法:

設(shè)定像素:在一個像素上碰觸滑鼠左按鈕,或者是按住左按鈕并拖拽它, 每一個經(jīng)過的像素方格均會被設(shè)定,直到松開按鈕為止。

清除像素:和上述相同的方法,但是以滑鼠右按鈕代替。

反轉(zhuǎn)(invert)像素:在一個像素上碰觸滑鼠中按鈕(也就是黑的像素被清 除而白的像素被設(shè)定),當(dāng)你按住中按鈕并拖拽,所經(jīng)過的像 素格均會反轉(zhuǎn)。

┌————————————————————┐ │ p160 fig 14.1 │ │ │ │ 圖14-1 位元映像編輯器 │ └————————————————————┘

bitmap還有其它的面貌:如果你觀察接近箭頭的上端部份(見圖14-2的 放大圖),你可以在其中的一個方格中看到有一個小菱形,這代表了熱點(hotspot) ,當(dāng)bitmap被用來建造一個游標(biāo)時會應(yīng)用到:熱點是游標(biāo)真正動作的點。指向 型的游標(biāo),熱點通常在頂端,而圓形或方形的游標(biāo),熱點則在中心。(你可以 用Set Hot Spot和Clear Hot Spot兩個命令來更改熱點的位置或消去它)

當(dāng)你結(jié)束了你的更改動作,可以用碰觸Write Output將位元映像儲存至檔 案,但不會離開bitmap程式。

┌————————————————————┐ │ p161 fig 14.2 │ │ │ │ 圖14-2 一個游標(biāo)的”熱點” │ └————————————————————┘

離開程式,碰觸Quit,如果你編輯了位元映像卻試圖在未儲存前離開程式, 你將會得到提示以確定你是否真要如此做。

14.2.3 畫形狀(shapes)

bitmap有數(shù)個功能使得畫圖更容易:

畫一條線:碰觸Line,游標(biāo)會變成一個大黑點,在所欲畫的線的一端碰觸 一下按鈕,而後在另一端也碰觸一下,bitmap會畫出這條線。

畫一個中空的圓:碰觸Circle,同樣地,游標(biāo)變成一個大黑點,在你所欲 畫圓的圓心碰觸一下,而後在所欲畫圓之圓周上的任一點碰觸 一下,bitmap將畫出這個圓的圓周。

畫一個填滿的圓:碰觸Filled Circle ,其馀同上。

14.2.4 在長方形的區(qū)域內(nèi)工作

命令Clear Area、Set Area和Invert Area 必須在長方形區(qū)域下操作,長 方形區(qū)域的決定方式是你在它的左上角以按住滑鼠任意按鈕的方式指定,然後 拖拽到右下角,當(dāng)你拖拽時,目前被指定的區(qū)域會以高亮度顯示。

你可以拷貝、移動或重疊(overlay) 一個區(qū)域,你以拖拽的方式指定原始 區(qū)域,而後在目標(biāo)區(qū)域上的左上角碰觸按鈕,各種命令的動作如下:

拷貝(Copy):目標(biāo)區(qū)域會被消除,而所有對應(yīng)於原始區(qū)域為黑像素的 均會被設(shè)定。

移動(Move):原始區(qū)域和目標(biāo)區(qū)域均被清除,目標(biāo)區(qū)域?qū)?yīng)於原始區(qū) 域為黑像素的均會被設(shè)定。

重疊(Overlay) :在目標(biāo)區(qū)域中對應(yīng)於原始區(qū)域被設(shè)定的像素均會被 設(shè)定,其它沒有改變。

14.2.5 一個位元映像的檔案格式

一個位元映像會如同ASCII 文字一樣儲存到檔案中,其格式類似C 語言程 式片段。

例如:檔案 /usr/include/X11/bitmaps/cntr_ptr 的內(nèi)容:

#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的變數(shù)僅在熱點被指定後才會包含進(jìn)來。

更多的細(xì)節(jié)包含在bitmap(1) 的指南頁中,不過無論如何,你毋需直接以 此種格式處理位元映像,任何你想要做的事均有工具程式來處理。

14.3 編輯位元映像其它的方法

bitmap程式對於一個小的圖形工作起來算是相當(dāng)方便,但它有一些缺點:

.它不接受較簡單格式的輸入檔,例如像一些由掃描現(xiàn)存圖形所產(chǎn)生的檔案。

.它必需以交談式執(zhí)行,對一些程序性的編輯動作并不方便。

.你可能希望用它產(chǎn)生一些位元映像來顯示,但它無法在非X系統(tǒng)上執(zhí)行。

要克服上述的問題,需要以字元圖(character picture) 的形式來建立位 元映像,并提供這個格式和bitmap的格式相互轉(zhuǎn)換的程式。字元圖格式是非常 明顯的:每一行的像素用一行的字元來表示,黑的像素用一個指定的字元(預(yù) 設(shè)為# )而白的像素用另一個字元(預(yù)設(shè)為 -)表示,以cntr_ptr為例,字元 圖的格式如圖14-3

┌————————————————————┐ │ p164 fig 14.3 │ │ │ │ 圖14-3 字元圖格式的位元映像 │ └————————————————————┘

你能以本文編輯器或其它任何系統(tǒng)上任何其它合適的程式編輯這些圖形, 也可以由掃描器(scanner) 或其它影像設(shè)備產(chǎn)生。

14.3.1 字元圖和X位元映像間的轉(zhuǎn)換

X提供了兩個程式作字元圖格式和位元映像格式間的轉(zhuǎn)換:

atobm : 轉(zhuǎn)換一個字元圖為標(biāo)準(zhǔn)的位元映像。

bmtoa : 轉(zhuǎn)換一個標(biāo)準(zhǔn)的位元映像為字元圖。

兩個程式均允許你指定以何字元來代表黑和白像素。

14.4 定制你的根視窗 -- xsetroot

xsetroot 讓你設(shè)定你的根視窗的特徵,你可以改變視窗背景的顏色和圖樣( pattern) ,以及視窗所使用的游標(biāo)。

14.4.1 設(shè)定一個背景的位元圖樣

你可以指定任何位元映像來當(dāng)作你螢?zāi)坏谋尘埃ㄖ灰牵氐臉?biāo)準(zhǔn)格式) , 在 xsetroot 的命令列上,-bitmap 選項跟隨著位元映像的檔案名稱。例如:

xsetroot -bitmap /usr/include/X11/bitmaps/mensetmanus

會出現(xiàn)一個精致的背景(見圖14-4)(拉丁語 Mens et Manus (mensetmanus) 是 MIT的箴言,兩個人物的圖形簡單表現(xiàn)出 MIT的精神。)

┌————————————————┐ │ │ │ P165 Fig 14.4 │ │ │ │圖14 - 4 設(shè)定 mensetmanus位元 │ │ 映像為背景圖樣的根視窗 │ └————————————————┘

14.4.2 設(shè)定一個背景游標(biāo)

如果你不要使用預(yù)設(shè)的 '大的 X '游標(biāo),你可以用選項 -CURSOR 加上 cursorbitmap 和 maskbitmap兩個引數(shù)來改變它,兩個引數(shù)均為位元映像 檔案的名稱。例如:設(shè)定游標(biāo)為前節(jié)所示的位元映像,使用命令:

xsetroot -cursor /usr/include/X11/bitmaps/cntr_ptr /usr/include/X11/bitmaps/cntr_ptrmsk

位元映像的對照圖見圖14-5.

┌————————————————┐ │ │ │ P166 Fig 14.5 │ │ │ │圖14 - 5 游標(biāo)及其遮罩的位元映像 │ └————————————————┘

maskbitmap決定了cursorbitmap的哪些像素真正被顯示出來:游標(biāo)像素 中只有對應(yīng)到遮罩像素(mask)為黑的部份才會用到,游標(biāo)其它的像素不會 被顯示出來??偨Y(jié)來說,遮罩決定了游標(biāo)的外形,反之,游標(biāo)位元映像則 決定了外形的顏色。遮罩和游標(biāo)的位元映像必須大小相同。

這種遮罩結(jié)構(gòu)在兩種情況下非常有用:

1. 它允許 '乾凈地' 顯示出非長方形游標(biāo),而不需顯示出多馀的空白。例如 如果沒有遮罩,cntr_ptr會顯示成一個 16 x 16白方形中有一個箭頭,當(dāng)你用 它指物件時,物件的一部份會被矩形外框遮蓋住。

2. 適當(dāng)?shù)卦O(shè)定遮罩,你可以保證不論背景的顏色為何均能看得到游標(biāo)。例如 cntr_ptrmsk 比 cntr_ptr 的邊均大一個元素,所以游標(biāo)周圍圍繞著一圈白邊 。如果遮罩和游標(biāo)大小相同的話,當(dāng)游標(biāo)在黑色的區(qū)域?qū)Р灰姟?

你可以讓遮罩和游標(biāo)使用相同的位元映像:游標(biāo)的外形會如你所期望(因 為遮罩決定外形,而這外形正是你想要的),它們可以工作,但是當(dāng)游標(biāo)進(jìn)入 和它相同顏色的區(qū)域時,你就很難看到游標(biāo)了。實際上,并非所有在 /usr/include/X11/bitmaps中的位元映像均有相對應(yīng)的遮罩,如果你使用它們 當(dāng)作游標(biāo),你必須使用游標(biāo)位元映像當(dāng)作遮罩。

有興趣的話,試一試把mensetmanus 當(dāng)作游標(biāo)和遮罩(熱點是在左上角)。

14.4.3 其它的背景設(shè)定選項

你可以用命令列選項 -solid colour設(shè)定背景為單一顏色(在單色顯示 器上只有黑色和白色)。你可以用 -grey或 -gray設(shè)定顏色的灰度,你也可以 用 -mod x y 設(shè)定格子圖樣,x 和 y為 1到16的整數(shù)。

14.4.4 重定預(yù)設(shè)的背景和游標(biāo)

如果你不喜歡你既有的設(shè)定,你可以用下列兩者之一恢復(fù)預(yù)設(shè)的游標(biāo)和背 景:

xsetroot -def xsetroot

14.5 總結(jié)

本章中,我們看到如何以交談的方式編輯位元映像,如何儲存它們,和如 何把它們與其它格式之間作轉(zhuǎn)換以使它們能被那些非視窗系統(tǒng)程式處理。你可 以把位元映像和xsetroot連接在一起,以定制適合你自己口味的系統(tǒng):用不同 的方法設(shè)定你根視窗的背景和變更游標(biāo)。

下一章,我們繼續(xù)來定制系統(tǒng),并且來看一下你用以設(shè)定X程式預(yù)設(shè)選項 的結(jié)構(gòu)。

標(biāo)簽: Windows系統(tǒng)
主站蜘蛛池模板: 国产精品久久久久久久福利院 | 欧美日韩国产人成在线观看 | 99精品一区二区三区 | 美女视频免费看视频网站 | 亚洲第一中文 | 久久福利青草狠狠午夜 | 九九热视频在线免费观看 | 精品视频一区二区三区免费 | 欧美大胆a| 黄色大秀视频 | 欧美三级一区二区 | 美国aaaa一级毛片啊 | 国产在线观看免费 | 黄网址在线看 | 久久久久久久久久免免费精品 | 岬奈一区二区中文字幕 | 国产精品亚洲欧美日韩久久 | 国产精品一区伦免视频播放 | 国产在线观看免费人成小说 | 一级特黄aa大片欧美网站 | 成人网视频在线观看免费 | 99在线观看精品免费99 | 中文字幕乱码中文乱码51精品 | 手机成人看片 | 成人在线观看一区 | 精品一区二区三区在线播放 | 国产亚洲精品一区二区在线播放 | 日本一级大黄毛片免费基地 | 国产精品久久久久久久久久一区 | 久草久热| 一个人看的www日本高清视频 | 99国产精品高清一区二区二区 | 亚洲第一网站 | 日韩国产成人精品视频人 | 久久久久免费精品视频 | 精品国产中文一级毛片在线看 | 成年人国产视频 | 亚洲欧美国产一区二区三区 | 亚久久伊人精品青青草原2020 | 亚洲精品久久久久综合中文字幕 | 韩国三级 mp4|