# Interface Paint

All Superinterfaces:
  `Transparency`

All Known Implementing Classes:
  `Color, ColorUIResource, GradientPaint, LinearGradientPaint, MultipleGradientPaint, RadialGradientPaint, SystemColor, TexturePaint`

public interface Paint extends Transparency
This `Paint` interface defines how color patterns can be generated for `Graphics2D` operations. A class implementing the `Paint` interface is added to the `Graphics2D` context in order to define the color pattern used by the `draw` and `fill` methods.

Instances of classes implementing `Paint` must be read-only because the `Graphics2D` does not clone these objects when they are set as an attribute with the `setPaint` method or when the `Graphics2D` object is itself cloned.

See Also:
  - `PaintContext`
  - `Color`
  - `GradientPaint`
  - `TexturePaint`
  - `Graphics2D.setPaint(Paint)`

- ## Field Summary

  ### Fields declared in interface Transparency

  `BITMASK, OPAQUE, TRANSLUCENT`
  Modifier and Type
  Field
  Description
  `static final int`
  `BITMASK`
  Represents image data that is guaranteed to be either completely opaque, with an alpha value of 1.0, or completely transparent, with an alpha value of 0.0.
  `static final int`
  `OPAQUE`
  Represents image data that is guaranteed to be completely opaque, meaning that all pixels have an alpha value of 1.0.
  `static final int`
  `TRANSLUCENT`
  Represents image data that contains or might contain arbitrary alpha values between and including 0.0 and 1.0.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `PaintContext`
  `createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform xform, RenderingHints hints)`
  Creates and returns a `PaintContext` used to generate the color pattern.

  ### Methods declared in interface Transparency

  `getTransparency`
  Modifier and Type
  Method
  Description
  `int`
  `getTransparency()`
  Returns the type of this `Transparency`.

- ## Method Details

  - ### createContext

    PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform xform, RenderingHints hints)
    Creates and returns a `PaintContext` used to generate the color pattern. The arguments to this method convey additional information about the rendering operation that may be used or ignored on various implementations of the `Paint` interface. A caller must pass non-`null` values for all of the arguments except for the `ColorModel` argument which may be `null` to indicate that no specific `ColorModel` type is preferred. Implementations of the `Paint` interface are allowed to use or ignore any of the arguments as makes sense for their function, and are not constrained to use the specified `ColorModel` for the returned `PaintContext`, even if it is not `null`. Implementations are allowed to throw `NullPointerException` for any `null` argument other than the `ColorModel` argument, but are not required to do so.
    Parameters:
      `cm` - the preferred `ColorModel` which represents the most convenient format for the caller to receive the pixel data, or `null` if there is no preference.
      `deviceBounds` - the device space bounding box of the graphics primitive being rendered. Implementations of the `Paint` interface are allowed to throw `NullPointerException` for a `null deviceBounds`.
      `userBounds` - the user space bounding box of the graphics primitive being rendered. Implementations of the `Paint` interface are allowed to throw `NullPointerException` for a `null userBounds`.
      `xform` - the `AffineTransform` from user space into device space. Implementations of the `Paint` interface are allowed to throw `NullPointerException` for a `null xform`.
      `hints` - the set of hints that the context object can use to choose between rendering alternatives. Implementations of the `Paint` interface are allowed to throw `NullPointerException` for a `null hints`.
    Returns:
      the `PaintContext` for generating color patterns.
    See Also:
      - `PaintContext`
      - `ColorModel`
      - `Rectangle`
      - `Rectangle2D`
      - `AffineTransform`
      - `RenderingHints`