Справочник API: Paint
Класс Paint определяет стиль, цвет и эффекты, используемые при рисовании на Canvas. Это легковесный объект, который можно повторно использовать в нескольких вызовах рисования.
Основные свойства
Цвет и прозрачность
setColor(int color): Устанавливает цвет в формате ARGB.setAlpha(int alpha): Устанавливает только компонент альфа (прозрачность) (0-255).setColor4f(Color4f color, ColorSpace space): Устанавливает цвет, используя значения с плавающей запятой для большей точности.
Стиль
setMode(PaintMode mode): Определяет, заливает ли краска внутреннюю часть фигуры (FILL), обводит контур (STROKE) или делает и то, и другое (STROKE_AND_FILL).setStrokeWidth(float width): Устанавливает толщину обводки.setStrokeCap(PaintStrokeCap cap): Определяет форму концов обведенной линии (BUTT, ROUND, SQUARE).setStrokeJoin(PaintStrokeJoin join): Определяет, как соединяются сегменты обводки (MITER, ROUND, BEVEL).
Сглаживание
setAntiAlias(boolean enabled): Включает или отключает сглаживание краев. Настоятельно рекомендуется для большинства операций рисования UI.
Эффекты и шейдеры
Объекты Paint могут быть улучшены с помощью различных эффектов для создания сложной визуализации.
Шейдеры (Градиенты и паттерны)
Шейдеры определяют цвет каждого пикселя на основе его позиции.
setShader(Shader shader): Применяет линейный градиент, радиальный градиент или паттерн изображения.
Цветовые фильтры
Цветовые фильтры изменяют цвета источника перед их отрисовкой.
setColorFilter(ColorFilter filter): Применяет цветовые матрицы, режимы наложения или преобразования яркости.
Маскирующие фильтры (Размытия)
Маскирующие фильтры влияют на альфа-канал рисунка.
setMaskFilter(MaskFilter filter): Используется в основном для создания размытий и теней.
Фильтры изображений
Фильтры изображений более сложные и могут влиять на весь результат рисования.
setImageFilter(ImageFilter filter): Используется для размытий, теней и комбинирования нескольких эффектов.
Пример использования
Paint paint = new Paint()
.setColor(0xFF4285F4)
.setAntiAlias(true)
.setMode(PaintMode.STROKE)
.setStrokeWidth(4f)
.setStrokeJoin(PaintStrokeJoin.ROUND);
canvas.drawRect(Rect.makeXYWH(10, 10, 100, 100), paint);Примечание о производительности
Создание объекта Paint относительно быстрое, но частое его изменение в тесном цикле может создавать некоторую нагрузку. Как правило, рекомендуется подготовить ваши объекты Paint один раз и повторно использовать их во время рендеринга, если их свойства не меняются.