国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

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

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

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

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

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

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

/usr/include/x11/bitmaps

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

14.2 交談式地編輯一個(gè)位元映像 -- bitmap

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

14.2.1 啟動(dòng)bitmap

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

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

bitmap big-cross 40X50 &

14.2.2 使用bitmap

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

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

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

用三鈕滑鼠編輯圖形最簡(jiǎn)單的方法:

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

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

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

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

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

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

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

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

14.2.3 畫形狀(shapes)

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

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

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

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

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

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

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

拷貝(Copy):目標(biāo)區(qū)域會(huì)被消除,而所有對(duì)應(yīng)於原始區(qū)域?yàn)楹谙袼氐? 均會(huì)被設(shè)定。

移動(dòng)(Move):原始區(qū)域和目標(biāo)區(qū)域均被清除,目標(biāo)區(qū)域?qū)?yīng)於原始區(qū) 域?yàn)楹谙袼氐木鶗?huì)被設(shè)定。

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

14.2.5 一個(gè)位元映像的檔案格式

一個(gè)位元映像會(huì)如同ASCII 文字一樣儲(chǔ)存到檔案中,其格式類似C 語(yǔ)言程 式片段。

例如:檔案 /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ù)僅在熱點(diǎn)被指定後才會(huì)包含進(jìn)來(lái)。

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

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

bitmap程式對(duì)於一個(gè)小的圖形工作起來(lái)算是相當(dāng)方便,但它有一些缺點(diǎn):

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

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

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

要克服上述的問(wèn)題,需要以字元圖(character picture) 的形式來(lái)建立位 元映像,并提供這個(gè)格式和bitmap的格式相互轉(zhuǎn)換的程式。字元圖格式是非常 明顯的:每一行的像素用一行的字元來(lái)表示,黑的像素用一個(gè)指定的字元(預(yù) 設(shè)為# )而白的像素用另一個(gè)字元(預(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提供了兩個(gè)程式作字元圖格式和位元映像格式間的轉(zhuǎn)換:

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

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

兩個(gè)程式均允許你指定以何字元來(lái)代表黑和白像素。

14.4 定制你的根視窗 -- xsetroot

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

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

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

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

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

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

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

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

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

位元映像的對(duì)照?qǐng)D見(jiàn)圖14-5.

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

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

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

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

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

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

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

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

你可以用命令列選項(xiàng) -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é)

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

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

標(biāo)簽: Windows系統(tǒng)
主站蜘蛛池模板: 镇平县| 手游| 纳雍县| 安化县| 上栗县| 拉孜县| 增城市| 宣恩县| 贵州省| 临高县| 平远县| 蚌埠市| 定安县| 新建县| 灵武市| 武陟县| 柘城县| 利川市| 灵寿县| 那坡县| 大城县| 渑池县| 隆回县| 营山县| 白银市| 柯坪县| 铁岭市| 额敏县| 团风县| 桦川县| 徐水县| 中牟县| 东明县| 湄潭县| 永吉县| 彰武县| 长汀县| 温泉县| 泽普县| 乌什县| 固安县|