Как получить объект Color в Java из строки CSS-стиля, которая описывает цвет? - PullRequest
0 голосов
/ 13 мая 2010

Например, у меня есть строки #0f0, #00FF00, green, и во всех случаях я хочу преобразовать их в Color.GREEN.

Существуют ли какие-либо стандартные способы или, возможно, некоторые библиотеки имеют необходимую функциональность?

1 Ответ

1 голос
/ 13 мая 2010

Во-первых, я прошу прощения, если нижеприведенное не поможет, то есть если вы уже знаете, как это сделать, и просто искали библиотеку, которая сделает это за вас. Я не знаю ни одной библиотеки, которая бы это делала, хотя они, безусловно, могут существовать.

Из 3 строк, которые вы привели в качестве примера, #00FF00 является самым простым для преобразования.

String colorAsString = "#00FF00";
int colorAsInt = Integer.parseInt(colorAsString.substring(1), 16);
Color color = new Color(colorAsInt);

Если у вас есть #0f0 ...

String colorAsString = "#0f0";
int colorAsInt = Integer.parseInt(colorAsString.substring(1), 16);
int R = colorAsInt >> 8;
int G = colorAsInt >> 4 & 0xF;
int B = colorAsInt & 0xF;
// my attempt to normalize the colors - repeat the hex digit to get 8 bits
Color color = new Color(R << 4 | R, G << 4 | G, B << 4 | B);

Если у вас есть слово цвета, например green, то вам нужно сначала проверить, все ли цвета, распознаваемые CSS, находятся в константах Java. Если это так, вы можете использовать отражение, чтобы получить от них значения констант (вначале они должны быть заглавными).

Если нет, то вам может потребоваться создать карту строк CSS для раскраски самостоятельно. В любом случае, это, наверное, самый чистый метод.

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