一直想知道java.awt內是如何與機器本身實現功能的,查看了下awt裡的源碼。首先查看了顏色color類,發現該類實際上的功能是定義了一個int對象value,然後給1600萬種顏色編分別給個value值,也就是說color類就是一個存有顏色編號值得類,本身並不實現機器的顏色切換功能。
然後我又看了下各種容器的代碼,結果從swing的JFrame看到awt裡最基的component,基本上所有組件的結構基本上都是定義了如color類的成員變量,初始化也僅僅是更改這些成員變量的值,也就是說初始化的容器只是給容器內的顏色啊,布局管理啊等基本結構設值,而這些基本結構類也只是包含了一些數值。那麼,當我們將這些數值編譯完成,機器讀取的時候是如何實現圖形化的呢。
底層是操作系統的繪圖庫實現繪圖的,再底層是顯示卡的驅動。
int的value其實是一個argb值,我們知道一個int有32bit,我們分為4個字節,每個字節表示一個顏色分量(紅、綠、藍、透明度),用0~255表示這個分量的濃度。