首頁>科技>

上篇說了屏幕的文本顯示原理:ASCII編碼。計算機內部文字其實是排列組合的數組,屏幕就是打印出來相關數組地址裡的文字。那本期就認識屏幕是如何顯示的,不僅僅是文字,還有圖像圖片圖形。

RGB這個概念大家都懂,紅綠藍三原色嘛。三個原色混合,可以獲取成百上千種顏色。那就容易了不是,如果我們想讓一個方塊變化顏色,簡單啊,用三原色混唄。下面這個圖自己看。如何顯示一副圖像呢,用紅綠藍的小像素混合成一個大像素,表示一張圖的話需要很多大像素,這就是分辨率,很容易理解是吧。那讓圖像動起來咋辦?就每秒刷新24張不同的圖片,快速PPT,通過人眼暫留達到動態效果,這就是刷新率,也很容易理解對吧?

座標的概念大家都懂。windows體系下,例如經典的CMD界面,或者說DOS界面,純黑界面,屏幕座標是從左上方開始的,地位為(0,0)。右邊地址就是(0,1),下邊地址就是(1,0)。因為屏幕其實是個2D顯示,座標系只有縱橫軸。這是隻有一層窗口平鋪的簡單設計。

windows體系下,每個像素用座標表示,這個誰都理解。每個像素的顏色呢,用紅綠藍三原色的不同亮度表示,給固定的數字,每個顏色從0到255表示總共是256個位。那就容易了,白色就是三原色默認值嘛,表示為(0,0,0),或者用16進製表示為#FFFFFF,因為一般的驅動都是用16進製表示數的,沒別的理由,習慣罷了。那純黑色很容易理解,RGB(0,0,0),三原色亮度都是0,那就是黑,對吧。

RGB(255,0,0)就是紅,RGB(0,255,0)就是綠,這都很容易理解。這個知識就過了吧。

win的每個像素顯示顏色,而顏色組合,形成界面。每個任務運行在單獨的窗口下,win體系是這樣。塞班系統只有全屏幕,安卓可以根據指定分辨率全屏,這倆系統都不能拖動窗口。win因為是為大屏幕設計,窗口套窗口,就很直觀。

而層層疊疊的窗口,跟全屏沒別的窗口,還是不一樣的,複雜一些。win體系,就在座標系上動腦筋,在性能損失小的前提下實現了多層窗口界面。

反正,程序裡的圖形變化,都是以窗口座標為基準。你拖動框體,是windows系統的功勞。程序顯示只要關心你相對屏幕左上角的座標位置就好了。程序框架內顯示,只要計算屏幕座標+距離框架的位置,刷新時候,座標+固定數字就可以了。就算三層,5層套在一起,都是簡單的加減法計算。繪圖,就是顯示卡的負擔了。這種硬件剝離,讓windows在90年代,2000年代初,對各種老式服務器,遊戲機的概念,具備碾壓性優勢。

win的座標系三層,分別是Client Coordinate就是你操作的界面座標,Form Coordinate,就是你拖動的框架座標,Screen Coordinate就是屏幕左上角開始的座標。通過這一套設計,win的框架內,鼠標拖拖動動基本都是簡單的加減法計算,基本不依賴CPU,可謂異常節省性能。以至於,程序員基本不考慮拖框體這些優化。所以,本期看看就好,瞭解就好,編程根本用不到。

至於縮放分辨率,那是win另外的絕活了,90年代就做到了如此,可謂良心。

本期結束吧。下期走近硬盤跟文件體系,看看windows下,硬盤速度到底爛在哪裡。

7
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 「城市打卡」嘉定新城&老城