我有一些颜色似乎来自 Delphi TColor 变量(例如 8388608、128、12632256)。我需要使用 PHP 脚本将这些颜色转换为它们的 rgb 值。这如何在 PHP 中完成?
最佳答案
Delphi TColor
类型是一个整数,其位包含实际的 RGB 值,如下所示:
ssBBGGRR
提取 RGB 值:
您可以通过对 0xFF
按位执行 AND
来过滤掉部分,同时将位向右移动。
德尔福代码:
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 部分包含系统颜色索引。
关于php - 使用 PHP 转换 delphi TColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1125347/