用PHP转换delphi TColor

Flo*_*Flo 4 php delphi

我有一些颜色似乎来自Delphi TColor变量(例如8388608,128,12632256).我需要使用PHP脚本将这些颜色转换为rgb值.如何在PHP中完成?

Dan*_*ski 9

Delphi TColor类型是一个整数,其位包含实际的RGB值,如下所示:

ssBBGGRR
Run Code Online (Sandbox Code Playgroud)

提取RGB值:

您可以通过执行逐位筛选出部分AND具有0xFF,在换挡位到右侧.

德尔福代码:

R := Color and $FF;
G := (Color shr 8) and $FF;
B := (Color shr 16) and $FF; 
Run Code Online (Sandbox Code Playgroud)

PHP代码:

R = Color & 0xFF;
G = (Color >> 8) & 0xFF;
B = (Color >> 16) & 0xFF; 
Run Code Online (Sandbox Code Playgroud)

关于系统颜色的警告:

有一些特殊的颜色来自系统颜色.(如按钮和窗口颜色)

这些颜色实际上没有设置有效的RGB值.您可以通过检查前八位来检测它们.如果它们不为零,则表示您具有特殊的系统颜色.您还可以将颜色转换为整数.如果是负数,那就是系统颜色.

在这种情况下,R部分包含系统颜色索引.

  • 实际上,Delphi中的TColor是TTBBGGRR(T =透明度,或者alpha通道,无论你想叫它什么),而不是RRGGBB.HTML颜色是TTRRGGBB.所以你必须交换RR和BB部分.熟练掌握PHP的人会告诉我怎么样,我不知道...... (3认同)