色彩在觸控面板顯示中的表現
引言
色彩是觸控面板顯示屏上像素呈現的樣態,其由幀緩衝存儲中賦予的值決定。而在繪圖系統中,可顯示、使用和表現的色彩數量是有限的,這同樣適用於 TouchGFX 和其應用。應用中像素色彩的數量會影響顯示屏上的實際內容、幀緩衝所需的內存消耗以及整體性能等多項因素。本文將深入介紹 TouchGFX 中的色彩及可用的色彩格式,並探討其優缺點。
色彩格式
TouchGFX 中的色彩由紅、綠和藍三組分組成,即 RGB 色彩。每個色彩分組分的取值範圍為 0 到 255。0 表明該分組分停用,而 255 則表示該分組分達到了最大值。全黑色表示為 RGB 色彩 (0,0,0),而全白色則表示為 (255,255,255)。亮綠色表示為 (0,255,0),半亮紅色表示為 (128,0,0),暗紫色表示為 (64,0,64),依此類推。灰度應用中的所有色彩均為灰色,包括黑色到白色之間的所有灰色,因此由灰色強度(而非 RGB 值)表示。可將灰度色彩理解為 R = G = B 的 RGB 色彩。
在某些情況下,我們會考慮為色彩增加一個描述色彩不透明度的分組分。與色彩的其他分組分一樣,不透明度的取值範圍也為 0 到 255。具有不透明度的色彩稱為 RGBA 色彩。A 表示 alpha,是不透明度慣例的名稱。完全不透明的黑色表示為 (0,0,0,255),具有一定透明度的紅色表示為 (255,0,0,128),依此類推。當色彩不完全不透明時,需要將其與已存在的色彩混合。這種色彩混合稱為 Alpha 混合。
色深
色深是指用於描述每個色彩的位數,儲存在幀緩衝中。我們將該值表示為每像素位數,簡稱 bpp。使用的位數越多,可描述的色彩就越多。常用的色深為 24 bpp。由於每一位都可能是有效或無效的,這表示可呈現 224 = 16,777,216 種不同的色彩。較少使用的另一種色深為 1 bpp。此色深適用於黑白應用,只能呈現 21 = 2 種不同的色彩。以下是關於色彩分組分範圍的註釋:
當使用的色深小於 24 bpp 時,紅、綠和藍分組分中每一個的取值範圍並非直接從 0 到 255。以 16 bpp 的紅色分組分為例,其取值範圍為 0 到 31。我們將值 31 視為 16 bpp 色深時能夠表現的最紅的色彩,即 24 bpp 色深時的值 255。一種理解方式是 16 bpp 色深的色彩只是 24 bpp 色深可能表現的色彩的一個子集。在 6/8 bpp 色系中,每個像素使用 6 位表示色彩信息(分別表示紅色、綠色和藍色的 2 位)。為了簡化幀緩衝訪問,每個像素從 6 位增加到 8 位(1 字節)。幀緩衝中多餘的兩位未使用。
在確定表示色彩所需的位數後,我們進一步研究位的內容。色彩通過位來描述紅色、綠色和藍色,但色深本身並不能指定像素中位的順序(格式)。例如:先是藍色,再是綠色,接着是紅,或者順序相反。根據應用的色深,可使用某些特定的色彩格式。在 TouchGFX 中,色深為 24 bpp 的色彩的色彩格式為 RGB888。這意味着對紅、綠和藍分量中的每一個都使用 8 個比特位。以亮紫色 RGB (255,0,255) 為例,通過將分組分組合成一個色彩值來表示這種色彩在這種格式中,紅色位於最高的 8 位,然後是綠色,藍色位於最低的 8 位。TouchGFX 對 16 bpp 色彩使用色彩格式 RGB565,即紅、綠和藍色分別為 5 位、6 位和 5 位。由於紅色有 5 位,完全亮起為 31,因此代碼中的亮紫色對於 6 bpp 色彩,TouchGFX 支持 4 種不同的色彩格式:RGBx2222、xRGB2222、BGRx2222 和 xBGR222。前述格式中之所以有 x,是因為 6 位色彩按字節的形式存儲。為了構成字節,用 2 個比特位填充色彩。同時提供 RGB 和 BGR 是考慮到一些顯示屏的需要,這樣則無需在向顯示屏發送像素前轉換像素。在 RGBx2222 模式下,表示亮黃色的代碼如下:
對於每種灰度色深,TouchGFX 都相應的支持其對應的色彩格式。4 bpp 的色彩格式表示為 GRAY4,2 bpp 為 GRAY2,1 bpp 為 BW(表示黑色和白色)。對於 4 bpp,全白色為 0xFF。TouchGFX 有一項輔助功能,可返回色彩在當前色彩格式下的正確表示方法。
圖像色彩格式
圖像大多數 UI 應用的重要部分,圖像由色彩填充而成。在 TouchGFX 中,圖像存儲在存儲器中,由特定格式的色彩填充而成。在許多情況下,圖像使用支持的像素色彩格式中的一種,但也可以使用其他圖像格式。在繪製前,特定圖像色彩格式下的圖像中的像素會被轉換為合適的像素格式。這些圖像格式中的一些格式(L8)按照色彩查找表(稱為 CLUT)來呈現相關圖像並索引到該表中。L8 圖像中色彩數量的最大可能值為 28 = 256。L8 格式佔用的空間比非 L8 格式少,以包含 200 種不同色彩的 100×100 圖像為例,存儲為 ARGB8888 格式時的空間佔用量為 100x100x32 位 = 40000 字節,存儲為 L8_ARGB8888 格式時為 100x100x8 位 + 200×32 位 = 10800 字節。
在這裡閲讀使用 L8 格式的更多相關信息。圖像格式 BW_RLE 按連續的黑色和白色存儲色彩,而不是存儲單一像素色彩。在許多情況下,這種格式也可以更高效地利用存儲空間。通常使用字節指針訪問 24 位格式 RGB888 和 32 位格式 ARGB888。此時,須瞭解像素以小端順序存儲。以 32 位色 0xFFFF7700 為例(alpha=0xFF,紅色=0xFF,綠色=0x77,藍色=0x00)。當色彩位於 32 位變量或寄存器中時,值為 0xFFFF7700。當色彩存儲在內存中時,存儲的字節為 {0x00、0x77、0xFF、0xFF}。這與 BGRA 順序對應。同樣,16 位格式 RGB565 始終通過 16 位指針訪問,因此字節順序並不重要,但會在內存中交換。對於 8 位格式,例如:ARGB2222,該色彩適合一個字節(兩個最高位中的 alpha),字節存儲不變。較小格式 GRAY4、GRAY2 和 BW 可按兩種順序存儲。低位可以是最左邊的像素或最右邊的像素。如果低位是最左邊的像素,我們稱之為 LSB 模式,反之則為 MSB 模式。
文本色彩格式
文本,更準確地説是字形,也以特定色彩格式存儲在存儲器中。TouchGFX 中可供使用的文本色彩格式為字形格式猶如小幅圖像,每個色彩條目都存儲了每個像素的不透明度。因此,之後不僅能應用實際色彩以及紅、綠和藍分量,還能繪製如存儲字形“A”的藍色和紅色版本。每個字形使用的位數越多,通常就會顯得越平滑和美觀。對於嵌入式圖形,我們希望獲得最高視覺質量,但同時也需考慮內存的消耗量。
色彩表示的藝術與科學
色彩表示是一種用色彩來傳達訊息、情感或想法的技巧。它存在於各種領域,從藝術、設計到科學和技術。
色彩表示在藝術中的應用
在藝術中,色彩被用作表達情緒、創造氛圍和象徵意義的有力工具。
色彩 | 情緒 | 氛圍 | 象徵 |
---|---|---|---|
紅色 | 熱情、興奮 | 熱情、活力 | 愛情、危險 |
黃色 | 樂觀、快樂 | 明亮、歡快 | 希望、智慧 |
綠色 | 平衡、和諧 | 平靜、自然 | 生長、繁榮 |
藍色 | 平靜、放鬆 | 憂鬱、冷靜 | 海洋、天空 |
紫色 | 皇室、尊貴 | 神秘、優雅 | 精神、想像力 |
色彩表示在設計中的應用
在設計中,色彩可用於影響行為、創造視覺層次感和建立品牌識別度。
行業 | 色彩 | 用途 |
---|---|---|
行銷 | 紅色 | 引起注意、促進行動 |
醫療保健 | 綠色 | 傳達平靜、治療環境 |
教育 | 黃色 | 促進學習、記憶力 |
食品 | 黃色、紅色 | 刺激食慾、傳達美味 |
科技 | 藍色 | 建立信任、可靠性 |
色彩表示在科學和技術中的應用
在科學和技術中,色彩表示用於傳達複雜的資料、解釋現象和進行可視化分析。
應用 | 色彩 | 用途 |
---|---|---|
氣象學 | 彩虹色 | 表示温度範圍 |
地理學 | 海軍圖 | 表示水深 |
生物學 | 顯微鏡 | 染色樣本以視覺化細胞結構 |
醫療成像 | 暖色調、冷色調 | 表示血流或組織健康 |
色彩表示的技術
色彩模型:描述色彩如何表示的方法,例如 RGB、CMYK 和 HSV。
色彩空間:定義色彩範圍的立體空間,例如 LAB 和 CIELAB。
色彩量化:減少色彩表示數量以使用更少的記憶體或儲存空間。
色彩表示的挑戰
色彩表示會受到以下因素的影響:
延伸閲讀…
最常用的計算機色彩表示方法——RGB模式與CMYK模式原創
前端人需要瞭解的色彩表示方法
- 文化差異:色彩的象徵意義因文化而異。
- 個人偏好:不同的人對色彩有不同的反應。
- 照明條件:不同的照明條件會改變色彩的感知。
- 設備差異:不同的顯示器和印表機會產生不同的色彩結果。
結論
色彩表示是一種強大的工具,可以用於傳達資訊、情感和想法。從藝術和設計到科學和技術,它存在於廣泛的應用中。瞭解色彩表示的技術和挑戰對於有效使用它傳達訊息至關重要。