function GetSysColorNum: Integer;
var
ScreenDC: HDC;
NumBitsPixel: Integer;
begin
Result := 0;
ScreenDC := GetDC(0);
try
NumBitsPixel := GetDeviceCaps(ScreenDC, BITSPIXEL);
Result := 1 shl NumBitsPixel; // 2^位數 = 顏色數
finally
ReleaseDC(0, ScreenDC);
end;
end;
GetDC(0) 獲取螢幕 DC。GetDeviceCaps(..., BITSPIXEL) 返回每像素位數 (如 4/8/16/24/32)。1 shl n 計算 2^n,即顏色總數 (16/256/65536/16M/4G)。| BitsPixel | 顏色數 | 典型模式 |
|---|---|---|
| 4 | 16 | VGA 16 色 |
| 8 | 256 | 256 色調色板 |
| 16 | 65,536 | High Color (565/555) |
| 24 | 16,777,216 | True Color |
| 32 | 4,294,967,296 | 32-bit (含 Alpha) |