# Class DynamicImage

java.lang.Object
com.codename1.ui.Image
com.codename1.ui.DynamicImage

All Implemented Interfaces:
  `ActionSource`

public abstract class DynamicImage extends Image
A base class for images that dynamically painted, just like a normal component. Subclasses just need to implement the `java.lang.Object, int, int, int, int)` method.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DynamicImage()`
  Constructor.
  `DynamicImage(int w, int h)`
  Constructor with width and height.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Image`
  `applyMask(Object mask)`
  Applies the given alpha mask onto this image and returns the resulting image see the createMask method for indication on how to convert an image into an alpha mask.
  `protected void`
  `drawImage(Graphics g, Object nativeGraphics, int x, int y)`
  Callback invoked internally by Codename One to draw the image/frame onto the display.
  `protected void`
  `drawImage(Graphics g, Object nativeGraphics, int x, int y, int w, int h)`
  Callback invoked internally by Codename One to draw the image/frame onto the display.
  `protected abstract void`
  `drawImageImpl(Graphics g, Object nativeGraphics, int x, int y, int w, int h)`
  This method should be overridden by subclasses to perform the actual drawing of the image on a graphics context.
  `Image`
  `fill(int width, int height)`
  Resizes/crops the image so that its center fills the given dimensions.
  `int`
  `getHeight()`
  Returns the height of the image
  `Style`
  `getStyle()`
  Gets the style for this image.
  `int`
  `getWidth()`
  Returns the width of the image
  `boolean`
  `requiresDrawImage()`
  New label optimizations don't invoke drawImage and instead just pass the native image directly to the underlying renderer.
  `void`
  `scale(int width, int height)`
  Scale the image to the given width and height, this is a fast algorithm that preserves translucent information
  `static void`
  `setIcon(Label lbl, DynamicImage img)`
  Sets the given image as the icon for the specified label.
  `void`
  `setStyle(Style s)`
  Sets the style to be used for drawing the image.

  ### Methods inherited from class Image

  `addActionListener, animate, applyMask, applyMaskAutoScale, asyncLock, createImage, createImage, createImage, createImage, createImage, createImage, createImage, createIndexed, createMask, createSVG, dispose, exifRotation, exifRotation, exifRotation, fireChangedEvent, flipHorizontally, flipVertically, getExifOrientationTag, getExifOrientationTag, getGraphics, getImage, getImageName, getRGB, getRGB, getRGBCached, getSVGDocument, isAlphaMutableImageSupported, isAnimation, isJPEG, isLocked, isOpaque, isPNG, isSVG, isSVGSupported, lock, mirror, modifyAlpha, modifyAlpha, modifyAlphaWithTranslucency, removeActionListener, rotate, rotate180Degrees, rotate270Degrees, rotate90Degrees, scaled, scaledHeight, scaledLargerRatio, scaledSmallerRatio, scaledWidth, setImageName, subImage, toRGB, unlock`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### DynamicImage

    public DynamicImage()
    Constructor. Creates image of default size: 250x250 pixels.

  - ### DynamicImage

    public DynamicImage(int w, int h)

    Constructor with width and height.

    ###### Parameters

    - `w`: The width of the image.

    - `h`: The height of the image.

- ## Method Details

  - ### setIcon

    public static void setIcon(Label lbl, DynamicImage img)
    Sets the given image as the icon for the specified label. This will link the label's style with the image just before each call the `java.lang.Object, int, int, int, int)` so that the image can correctly adapt to the label's style.

  - ### getStyle

    public Style getStyle()
    Gets the style for this image.

  - ### setStyle

    public void setStyle(Style s)

    Sets the style to be used for drawing the image. The `java.lang.Object, int, int, int, int)` can use any aspect of this style to customize the drawing.

    ###### Parameters

    - `s`: The style.

  - ### getWidth

    public int getWidth()

    Returns the width of the image

    ###### Returns

    the width of the image

    Overrides:
      `getWidth` in class `Image`

  - ### getHeight

    public int getHeight()

    Returns the height of the image

    ###### Returns

    the height of the image

    Overrides:
      `getHeight` in class `Image`

  - ### scale

    public void scale(int width, int height)

    Scale the image to the given width and height, this is a fast algorithm that preserves translucent information

    ###### Parameters

    - `width`: width for the scaling

    - `height`: height of the scaled image

    ###### Deprecated

    Overrides:
      `scale` in class `Image`

  - ### fill

    public Image fill(int width, int height)

    Resizes/crops the image so that its center fills the given dimensions. This is similar to `com.codename1.ui.plaf.Style#BACKGROUND_IMAGE_SCALED_FILL`

    ###### Parameters

    - `width`: the width to fill

    - `height`: the height to fill

    ###### Returns

    a new image (or the same image if dimensions happen to match) filling the width/height

    Overrides:
      `fill` in class `Image`

  - ### applyMask

    public Image applyMask(Object mask)

    Applies the given alpha mask onto this image and returns the resulting image see the createMask method for indication on how to convert an image into an alpha mask.

    ###### Parameters

    - `mask`: mask object created by the createMask() method.

    ###### Returns

    image masked based on the given object

    ###### Throws

    - `IllegalArgumentException`: if the image size doesn't match the mask size
    Overrides:
      `applyMask` in class `Image`

  - ### requiresDrawImage

    public boolean requiresDrawImage()
    Description copied from class: `Image`

    New label optimizations don't invoke drawImage and instead just pass the native image directly to the underlying renderer. This is problematic for some image types specifically timeline & FontImage and this method allows these classes to indicate that they need that legacy behavior of calling drawImage.

    ###### Returns

    true if a drawImage call is a required

    Overrides:
      `requiresDrawImage` in class `Image`

  - ### drawImageImpl

    protected abstract void drawImageImpl(Graphics g, Object nativeGraphics, int x, int y, int w, int h)

    This method should be overridden by subclasses to perform the actual drawing of the image on a graphics context.

    ###### Parameters

    - `g`: The graphics context

    - `nativeGraphics`: THe native graphics context.

    - `x`: x-coordinate of the bounds to draw.

    - `y`: y-coordinate of the bounds to draw.

    - `w`: width of the bounds

    - `h`: height of the bounds

  - ### drawImage

    protected void drawImage(Graphics g, Object nativeGraphics, int x, int y)

    Callback invoked internally by Codename One to draw the image/frame onto the display. Image subclasses can override this method to perform drawing of custom image types.

    ###### Parameters

    - `g`: the graphics object

    - `nativeGraphics`: the underlying native graphics which might be essential for some image types

    - `x`: the x coordinate

    - `y`: the y coordinate

    Overrides:
      `drawImage` in class `Image`

  - ### drawImage

    protected void drawImage(Graphics g, Object nativeGraphics, int x, int y, int w, int h)

    Callback invoked internally by Codename One to draw the image/frame onto the display. Image subclasses can override this method to perform drawing of custom image types.

    ###### Parameters

    - `g`: the graphics object

    - `nativeGraphics`: the underlying native graphics which might be essential for some image types

    - `x`: the x coordinate

    - `y`: the y coordinate

    - `w`: the width to occupy

    - `h`: the height to occupy

    Overrides:
      `drawImage` in class `Image`