4
我有一些顏色似乎來自Delphi TColor變量(例如8388608,128,12632256)。我需要用PHP腳本將這些顏色轉換爲rgb值。這怎麼能在PHP中完成?使用PHP轉換delphi TColor
我有一些顏色似乎來自Delphi TColor變量(例如8388608,128,12632256)。我需要用PHP腳本將這些顏色轉換爲rgb值。這怎麼能在PHP中完成?使用PHP轉換delphi TColor
德爾福TColor
類型是一個整數,其位包含實際的RGB值是這樣的:
ssBBGGRR
提取RGB值:
您可以通過執行逐位過濾掉部分AND
與0xFF
,同時將這些位向右移動。
Delphi代碼:
R := Color and $FF;
G := (Color shr 8) and $FF;
B := (Color shr 16) and $FF;
PHP代碼:
R = Color & 0xFF;
G = (Color >> 8) & 0xFF;
B = (Color >> 16) & 0xFF;
警告有關係統顏色:
有其從系統中導出的顏色特殊顏色。 (如按鈕和窗口顏色)
這些顏色實際上並沒有設置有效的RGB值。您可以通過檢查前八位來檢測它們。如果它們不是零,則會有特殊的系統顏色。您也可以將顏色轉換爲整數。如果它是負面的,這是一種系統顏色。
在這種情況下,R部分包含系統顏色索引。
我認爲TColor是奇怪的BGR; - (來自幫助文件)如果您指定TColor作爲特定的4字節十六進制數而不是使用圖形單元中定義的常量,則低三字節表示RGB顏色藍色,綠色和紅色的強度分別爲。值爲$ 00FF0000(Delphi)或0x00FF0000(C++)表示全強度,純藍色,$ 0000FF00(Delphi)或0x0000FF00(C++)爲純綠色,$ 000000FF(Delphi)或0x000000FF(C++)爲純紅色。 $ 00000000(Delphi)或0x00000000(C++)是黑色,$ 00FFFFFF(Delphi)或0x00FFFFFF(C++)是白色。 – robsoft 2009-07-14 13:31:15