windows7中大量的透明元素是怎麼顯示出來的

2021-06-29 05:37:06 字數 2528 閱讀 4779

在windows7中對話方塊大量使用透明的元素,但是這些對話方塊是如何看起來透明的呢?

以前我是這麼認為的:比如在白色的背景下顯示乙個150*150畫素點的50%透明的紅色方塊,顯示的方式是有0.5*150*150個紅色(0xff0000)畫素點隨機分布在150*150的方塊內,但是實驗出來的效果是這樣的,如下圖

畫素點隨機分布實現的「透明」!!!

後來呢聽同學說一般透明的顯示方式是:背景畫素rgb*透明度+顯示前景畫素rgb*(1-透明度) = 最終透明顯示效果畫素點的rgb ,也就是說所謂的透明其實是一種單色,透明也只是視覺上看起來透明罷了!比如上面50%透明(白色背景,紅色透明)白色rgb=0xffffff ,紅色rgb=0xff0000 ,那麼最終透明效果的畫素rgb=0xff7f7f ,最終效果

下圖

重新計算畫素點rgb實現的透明

上圖中共有3個方塊,細心觀察你會發現其實兩個紅色透明方塊是一樣的但是前乙個一眼就可以看出透明,但是後乙個就覺得是粉色方塊了。。這是我剛才說的透明其實只是視覺上看起來罷了。再上一張「全家福」

放了幾個可以對照看一下。

最後再科普一下畫素顏色。(參考

常見的顏色有 8位16位 24位32位色,其中24位及以上稱為真彩,是pc

最常用的顏色,其他基本用於嵌入式系統或一些工控領域,詳情如下表:

bit-深度 色彩數

1 2 (monochrome)

2 4 (cga)

4 16 (ega)

8 256 (vga)

16 65,536 (high color, xga)

24 16,777,216 (true color/真彩色, svga)

32 16,777,216 (true color + alpha channel/控制透明度,-遊戲特效)

關於256色,早先的一些較為形象的解釋是理解為256個油漆桶/256色

色板,分配給它們編號/索引號。「叫到哪個顏色」哪個顏色就出來填

畫素。因為如16色、256色的色彩數有限所以這麼解釋很簡單易理解。

而電腦操作過程中必須經過數碼編碼,那麼實際上256種顏色對應256

數碼(二進位制數值),也就是2^8=256,256色模式下電腦沒有必要去

24bit處理,在當時dos時代,處理8bit色彩比24bit要容易多了。

當然256色中的任意一種顏色都可以用24bit表示,甚至可以用32bit

64bit表示。但是不管如何,24bit模式就意味著 2^24種顏色。256色

式就意味著256種顏色,或者理解為24bit的2^24種顏色中的256個

色。256色模式: 共8 bits (b: 2 bits; g: 3 bits; r: 3 bits)。

high color:共16 bits (b: 5 bits, g: 6 bits, r: 5 bits)。

true color:一般24bit就是8bit/通道,真彩色。

windows下的32位是r、g、b三個通道各佔8位共24位,加上明度通道8位,所以是32位,24位也就是r、g、b三個通道各佔6位共18位,加上明度通道6位,所以是24位。

32位色中的24位用來儲存顏色資訊(r8g8b8),另外的8位用來儲存alpha資訊,alpha屬性就是透明度

24位色也有幾種表示,可以是r5g6b5,也可以是r5g5b5,等等。

什麼是rgb

rgb是表示紅色綠色藍色又稱為三原色光,英文為r(red)、g(green)

b(blue),在電腦中,rgb的所謂」多少」就是指亮度,並使用整數來表示。

通常情況下,rgb各有256級亮度,用數字表示為從0、1、2至255。雖然數字最高是255,但0也是數值之一,因此共256級。按照計算,256 級的rgb色彩總共能組合出約1678萬種色彩,即256×256×256=16777216。通常也被簡稱為1600萬色或千萬色。也稱為24位色(2 的24次方)。

對於單獨的r或g或b而言,當數值為0時,代表這種顏色不發光;如果為255,則該顏色為最高亮度。因此當rgb三種色光都發到最強的亮度,純白的rgb值就為255,255,255。螢幕上黑的rgb值是0,0,0。r,意味著只有紅色存在,且亮度最強,g和b都不發光。因此最紅色的數值是255,0,0。同理,最綠色就是0,255,0;而最藍色就是0,0,255。黃色較特殊,是由紅色加綠色而得就是255,255,0

24bit 和 32bit 是一樣的,由於24bit不能在視訊記憶體中對齊,所以不是所有的顯示卡都能支援。反而 32bit 因為可對齊,大多數的顯示卡都支援(當然視訊記憶體要足夠大)。32bit實際上也是24bit,一般都在 msb 上填充 8bit 的 0 或 alpha (沒有實際效果)。

Windows7中JumpList的實現

windows7 就要發布了,近期,就要和 ms 組織一次社群 win7 發布活動,正好這次也講 win7 的taskbar 開發,所以就把要講的東西組織成 blog 分享給出來,以供參考。對於windows7 taskbar 的開發功能是基於 com 元件來實現的,這些組織提供了操作 windos...

使用Windows 7中的庫

windows7中的庫功能讓管理檔案和資料夾變得簡單。今天我們就來看看如何使用庫,如何把網路共享的盤新增到庫中。windows7中的庫讓你更方便地管理散落在你電腦裡的各種檔案。你再也不必開啟層層的資料夾尋找你要的檔案了,只要新增到庫中就可以方便地找到它們了。如果windows7你用的時間不短,經常在...

Windows 7系統中的彩蛋「God Mode」

估計這個彩蛋是windows程式設計開發人員給自己留的快捷功能。windows 7系統中隱藏了乙個秘密的 god mode 字面上譯為 上帝模式 god mode其實就是乙個簡單的資料夾視窗,但包含了幾乎所有windows 7系統的設定,使用者只需通過這乙個視窗就能實現所有的操控,而不必再去為調整乙...