螢幕顯示簡介

螢幕顯示模式

一般你所看到的電腦, 包括個人電腦、工作站、大型主機、筆記型電腦、 掌上型計算機、電子字典等等, 其螢幕顯示基本尚可分為兩種模式:

  1. 圖形模式:可以顯示任何圖形

    例如 Windows 95/NT 下的一般視窗, 或是整個螢幕, Turbo C 中可以在文字模式及圖形模式中切換。

  2. 文字模式:只可以顯示文字(也可以圖形模式來模擬)

    例如以 DOS 開機之螢幕, Windows 95/NT 環境中的 DOS 模式視窗, Sptnet32 或是 Netterm 的 Telnet 視窗, 筆記本應用程式的視窗等等。

除了傳統的打字機是純粹的文字模式 (因為它只有 52 個英文字模 10 個數字和一些標點符號的字模, 當然只能印出這些文字。), 還有掌上型計算機以 7 段式 LED 顯示數字以外。 現在已經很少看到電腦只有文字模式的輸出裝置了。 大部分的電腦顯示界面都具有文字模式和圖形模式, 但是現在的視窗系統幾乎都只用圖形模式了, 並以圖形模式來模擬文字模式。為什麼呢 因為

  1. 圖形模式可以輕易地模擬文字模式,

  2. 圖形介面比較美觀親切,

  3. 圖形能夠表達的資訊遠比文字多。

圖形模式:

將畫面切為方格點 (稱為點陣圖), 每一點以明暗及顏色的不同來顯示即為圖形模式, 例如:

 

一般圖形模式所謂的解析度(resolution) 是指點陣圖橫向及縱向各分為多少點,例如: 640 x 480、 800 x 600 、 1024 x 768 、 1280 x 1024 等等, 在同樣大小的顯示器上分出的方格點愈多解析度愈高。

當然圖形模式中也可以顯示文字如下圖 (文字也是圖形的一種)

想像一下如果你寫一個程式要在圖形模式的螢幕上印出上圖的這個字的話, 你的程式是不是該要記下每一個座標點到底是黑的還是白的, 那還得了, 你寫的程式裡光光記這些東西就記不完了。 這個動作應該由作業系統來做, (也就是文字模式輸出, 程式中只要指定印出什麼字就好了), 因為我們的應用程式常常用文字和使用者溝通, 所以我們仍然常常在文字模式下操作。

文字模式:

將畫面分割為行列 (例如:常用的 80 行 24 列), 每一個位置可以顯示一個字元 (大、小寫英文字母、數字、或是標點符號), 中文字佔據兩個位置,幾乎都是用圖形模式模擬顯示的。 在這種輸出模式下, 應用程式只能輸出字元, 不能夠畫圖形, 輸出字元時只需要輸出該字元的代碼 (例如:
ASCII 編碼) 即可。 該字元顯示的樣子由作業系統去負責。

例如: C 程式中使用的標準輸出入函式庫是文字模式下操作的, 當使用 printf("C"); 時, printf() 函式事實上只送一個位元組資料給作業系統中負責顯示的函式, 這個位元組就是 ASCII 編碼中 0x43, 而顯示函式自己找到對應的字型如下圖

顯示在目前字元游標的位置上,並將字元游標向右移一格, 你在寫程式時完全不需考慮這些細節。

請注意:在上例中, 我們看到字元游標一格一格向右移, 移出視窗的話不就看不到了嗎? (就好像一張紙打字打到紙張外面去了一樣,) 所以我們要有所謂的換列字元, 在 C 程式中以 '\n' 表示, 用來將字元游標移到下一列第一個字的位置上。 實際上 printf() 函式傳送給作業系統顯示函式時, 不見得只傳送一個位元組的 ASCII 碼, 也可能是兩個位元組的 ASCII 碼, 例如:在 UNIX 作業系統中 '\n' 是 ASCII 的 0x0D, 在 MSDOS '\n' 則代表 ASCII 的 0x0D 及 0x0A, 為什麼會這樣子呢? 如果你有打過以前的英文打字機的話, 你可能會知道打字機在換列的時候其實打字的人要做兩個動作, 一個動作是將紙往上捲動一列, 另外一個動作是將紙移到最左邊, 在 ASCII 的編碼中於是也讓 0x0D 代表捲動到下一列 (linefeed), 而 0x0A 則代表將紙移到最左邊 (carriage return) 的動作。

程式設計課程 首頁
by Pei-yih Ting
E-mail: pyting@cs.ntou.edu.tw