首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Delphi 取得系統支援色彩數的方法

     編輯:更多程式設計知識

需求背景

應用程式在不同色深(16 色、256 色、High Color 16-bit、True Color 32-bit)的螢幕上顯示效果差異大。開發時在高色深環境調整的介面,若在低色深機器執行可能嚴重失真。因此需在程式啟動時偵測系統色深,動態調整介面配色或提示使用者。

實作函數

function GetSysColorNum: Integer;
var
  ScreenDC: HDC;
  NumBitsPixel: Integer;
begin
  Result := 0;
  ScreenDC := GetDC(0);              // 取得螢幕裝置內容
  NumBitsPixel := GetDeviceCaps(ScreenDC, BITSPIXEL); // 每像素位元數
  ReleaseDC(0, ScreenDC);            // 釋放 DC
  Result := 1 shl NumBitsPixel;      // 2^位元數 = 色彩數
end;

關鍵 API 說明

  • GetDC(0):取得整個螢幕的裝置內容(DC)。
  • GetDeviceCaps(DC, BITSPIXEL):回傳每像素色彩位元數(如 4、8、16、24、32)。
  • ReleaseDC:釋放 DC,避免資源洩漏。
  • 1 shl NumBitsPixel:左移運算等同 2 的 N 次方,快速計算色彩總數。

回傳值對照表

BITSPIXEL色彩數常見模式
416VGA 16 色
8256256 色調色盤
1665,536High Color (16-bit)
2416,777,216True Color (24-bit)
324,294,967,296True Color + Alpha (32-bit)

應用建議

在表單 `OnCreate` 事件中呼叫此函數,若色深低於 16-bit(< 65536),可自動切換至低色深介面模式,或顯示建議訊息:「偵測到系統色深較低,建議調整為 16-bit 以上以獲得最佳顯示效果。」

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved