Конвертировать Delphi TColor с PHP - PullRequest
4 голосов
/ 14 июля 2009

У меня есть некоторые цвета, которые, кажется, происходят из переменной Delphi TColor (например, 8388608, 128, 12632256). Мне нужно преобразовать эти цвета в их значения RGB с помощью сценария PHP. Как это можно сделать в PHP?

1 Ответ

9 голосов
/ 14 июля 2009

Тип Delphi 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 содержит индекс цвета системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...