Skip to content

Справочник 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): Используется для размытий, теней и комбинирования нескольких эффектов.

Пример использования

java
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 один раз и повторно использовать их во время рендеринга, если их свойства не меняются.