Java включает несколько классов и методов для работы с цветом. Основные классы цветов в Java — Color и ColorModel. Класс Color представляет абстрактные значения цвета sRGB, которые можно использовать для рисования графики или текста. Класс ColorModel используется для интерпретации значений пикселей в изображениях и графических контекстах. Также существуют методы для преобразования между различными цветовыми пространствами и моделями.
На базовом уровне Java представляет цвета с помощью значений RGB (красный, зеленый, синий). Класс Color позволяет создавать объекты Color с помощью целых чисел RGB от 0 до 255. Например:
Color brightRed = new Color(255, 0, 0); // Red Color forestGreen = new Color(0, 155, 0); // Green Color navyBlue = new Color(0, 0, 128); // Blue
Вы также можете создавать объекты Color с помощью шестнадцатеричных строк RGB:
Color tomato = Color.decode("#FF6347"); Color limeGreen = Color.decode("#32CD32"); Компонент alpha (прозрачность) можно указать как отдельный аргумент от 0 (прозрачный) до 255 (непрозрачный).
Color translucentWhite = new Color(255, 255, 255, 127);
Java также поддерживает создание цветов с помощью модели HSB (оттенок, насыщенность, яркость):
Color crimson = Color.getHSBColor(348.0f, 0.83f, 0.71f);
Значение оттенка находится в диапазоне от 0 до 360, насыщенность — от 0 до 1, а яркость — от 0 до 1.
Java определяет несколько стандартных цветов как общедоступные статические окончательные объекты Color:
| Цвет | Значение RGB |
|---|---|
| Цвет.ЧЕРНЫЙ | (0, 0, 0) |
| Цвет.СИНИЙ | (0, 0, 255) |
| Цвет.ГОЛУБОЙ | (0, 255, 255) |
| Цвет.DARK_GRAY | (64, 64, 64) |
| Цвет.GRAY | (128, 128, 128) |
| Цвет.GREEN | (0, 255, 0) |
| Цвет.LIGHT_GRAY | (192, 192, 192) |
| Цвет.MAGENTA | (255, 0, 255) |
| Цвет.ORANGE | (255, 200, 0) |
| Color.PINK | (255, 175, 175) |
| Color.RED | (255, 0, 0) |
| Color.WHITE | (255, 255, 255) |
| Color.YELLOW | (255, 255, 0) |
Они предоставляют общие цвета, которые можно использовать без необходимости указывать значения RGB каждый раз.
Класс Color поддерживает альфа-прозрачность от 0 (полностью прозрачный) до 255 (полностью непрозрачный). Это позволяет создавать полупрозрачные цветовые эффекты.
Методы getAlpha() и getRGB() можно использовать для извлечения альфа- и RGB-компонентов цвета:
int alpha = color.getAlpha(); int rgb = color.getRGB();
Значение RGB упаковывает красный, зеленый, синий и альфа-компоненты в одно целое с помощью побитовых операторов. Вы можете извлечь значения компонентов с помощью следующих методов:
int red = (rgb >> 16) & 0xFF; int green = (rgb >> 8) & 0xFF; int blue = (rgb) & 0xFF; int alpha = (rgb >> 24) & 0xFF;
Метод setRGB() можно использовать для создания нового цвета, указав объединенное значение RGBA:
int rgba = ((alpha & 0xFF)Общие методы работы с цветом
Класс Color предоставляет несколько полезных методов для работы с цветами:
Существуют также методы для смешивания цветов:
Классы графики Java 2D широко используют Color для заливки фигур, установки цветов пера и т. д. Классы ColorChooser и JColorChooser также позволяют выбирать цвета интерактивно.
Класс ColorModel инкапсулирует методы для преобразование между значениями пикселей и цветами альфа-красный-зеленый-синий (ARGB). Различные реализации ColorModel обрабатывают различные цветовые представления, такие как sRGB и CMYK. Основные цветовые модели, используемые в Java, включают:
DirectColorModel используется чаще всего. ComponentColorModel использует отдельные образцы R, G, B (и, возможно, альфа) в изображении. IndexColorModel использует одно значение образца, которое является индексом в таблице поиска цветов для конечного цвета.
Класс ColorModel предоставляет методы для преобразования между значениями образцов пикселей и объектами Color. Например:
DirectColorModel model = new DirectColorModel(32, 0xFF0000, 0xFF00, 0xFF); int rgb = 0xFF000000; // Черный с полным альфа-каналом Color color = model.getColor(rgb); // Возвращает Color.BLACK
ColorModel представляет способ, которым значения пикселей интерпретируются как цвета в определенном формате изображения или графическом контексте.
Java также предоставляет методы для преобразования цветового пространства между различными моделями. Основные методы преобразования цветов:
Например, чтобы преобразовать цвет sRGB в CMYK:
ColorSpace sRGB = ColorSpace.getInstance(ColorSpace.CS_sRGB); ColorSpace CMYK = ColorSpace.getInstance(ColorSpace.CS_CMYK); ColorConvertOp op = new ColorConvertOp(sRGB, CMYK); Color sRGBColor = new Color(255, 0, 0); // Красный цвет CMYKColor = op.filter(sRGBColor, null);
Это позволяет преобразовывать изображения между различными цветовыми моделями, такими как sRGB и CMYK, для печати.
Java предоставляет обширную поддержку цвета с помощью классов Color, ColorModel и ColorSpace. Класс Color представляет цветовые значения sRGB, которые можно использовать для операций рисования. ColorModel инкапсулирует преобразование между значениями пикселей и объектами Color. Такие методы, как ColorConvertOp, позволяют преобразовывать между цветовыми пространствами, такими как RGB, CMYK и HSB. В целом, цветовые классы Java обеспечивают полнофункциональное представление и манипулирование цветом.