public class ShadowRenderer
extends java.lang.Object
A shadow renderer generates a drop shadow for any given picture, respecting the transparency channel if present. The resulting picture contains the shadow only and to create a drop shadow effect you will need to stack the original picture and the shadow generated by the renderer.
A shadow is defined by three properties:
ShadowRenderer renderer = new ShadowRenderer(10, 0.5f, Color.GREEN); // .. renderer = new ShadowRenderer(); renderer.setSize(10); renderer.setOpacity(0.5f); renderer.setColor(Color.GREEN);The default constructor provides the following default values:
A shadow is generated as a BufferedImage
from another
BufferedImage
. Once the renderer is set up, you must call
createShadow(java.awt.image.BufferedImage)
to actually generate the shadow:
ShadowRenderer renderer = new ShadowRenderer(); // renderer setup BufferedImage shadow = renderer.createShadow(bufferedImage);
The generated image dimensions are computed as following:
width = imageWidth + 2 * shadowSize height = imageHeight + 2 * shadowSize
This renderer allows to register property change listeners with
addPropertyChangeListener(java.beans.PropertyChangeListener)
. Listening to properties changes is very
useful when you emebed the renderer in a graphical component and give the API
user the ability to access the renderer. By listening to properties changes,
you can easily repaint the component when needed.
ShadowRenderer
is not guaranteed to be thread-safe.
限定符和类型 | 字段和说明 |
---|---|
static java.lang.String |
COLOR_CHANGED_PROPERTY
Identifies a change to the color used to render the shadow.
|
static java.lang.String |
OPACITY_CHANGED_PROPERTY
Identifies a change to the opacity used to render the shadow.
|
static java.lang.String |
SIZE_CHANGED_PROPERTY
Identifies a change to the size used to render the shadow.
|
构造器和说明 |
---|
ShadowRenderer()
Creates a default good looking shadow generator.
|
ShadowRenderer(int size,
float opacity,
java.awt.Color color)
A shadow renderer needs three properties to generate shadows.
|
限定符和类型 | 方法和说明 |
---|---|
void |
addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Add a PropertyChangeAdapter to the listener list.
|
java.awt.image.BufferedImage |
createShadow(java.awt.image.BufferedImage image)
Generates the shadow for a given picture and the current properties
of the renderer.
|
java.awt.Color |
getColor()
Gets the color used by the renderer to generate shadows.
|
float |
getOpacity()
Gets the opacity used by the renderer to generate shadows.
|
int |
getSize()
Gets the size in pixel used by the renderer to generate shadows.
|
void |
removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Remove a PropertyChangeAdapter from the listener list.
|
void |
setColor(java.awt.Color shadowColor)
Sets the color used by the renderer to generate shadows.
|
void |
setOpacity(float shadowOpacity)
Sets the opacity used by the renderer to generate shadows.
|
void |
setSize(int shadowSize)
Sets the size, in pixels, used by the renderer to generate shadows.
|
public static final java.lang.String SIZE_CHANGED_PROPERTY
Identifies a change to the size used to render the shadow.
When the property change event is fired, the old value and the new
value are provided as Integer
instances.
public static final java.lang.String OPACITY_CHANGED_PROPERTY
Identifies a change to the opacity used to render the shadow.
When the property change event is fired, the old value and the new
value are provided as Float
instances.
public static final java.lang.String COLOR_CHANGED_PROPERTY
Identifies a change to the color used to render the shadow.
public ShadowRenderer()
Creates a default good looking shadow generator. The default shadow renderer provides the following default values:
These properties provide a regular, good looking shadow.
public ShadowRenderer(int size, float opacity, java.awt.Color color)
A shadow renderer needs three properties to generate shadows. These properties are:
size
- the size of the shadow in pixels. Defines the fuzziness.opacity
- the opacity of the shadow.color
- the color of the shadow.public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
Add a PropertyChangeAdapter to the listener list. The listener is
registered for all properties. The same listener object may be added
more than once, and will be called as many times as it is added. If
listener
is null, no exception is thrown and no action
is taken.
listener
- the PropertyChangeAdapter to be addedpublic void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
Remove a PropertyChangeAdapter from the listener list. This removes
a PropertyChangeAdapter that was registered for all properties. If
listener
was added more than once to the same event source,
it will be notified one less time after being removed. If
listener
is null, or was never added, no exception is thrown
and no action is taken.
listener
- the PropertyChangeAdapter to be removedpublic java.awt.Color getColor()
Gets the color used by the renderer to generate shadows.
public void setColor(java.awt.Color shadowColor)
Sets the color used by the renderer to generate shadows.
Consecutive calls to createShadow(java.awt.image.BufferedImage)
will all use this color
until it is set again.
If the color provided is null, the previous color will be retained.
shadowColor
- the generated shadows colorpublic float getOpacity()
Gets the opacity used by the renderer to generate shadows.
The opacity is comprised between 0.0f and 1.0f; 0.0f being fully transparent and 1.0f fully opaque.
public void setOpacity(float shadowOpacity)
Sets the opacity used by the renderer to generate shadows.
Consecutive calls to createShadow(java.awt.image.BufferedImage)
will all use this opacity
until it is set again.
The opacity is comprised between 0.0f and 1.0f; 0.0f being fully transparent and 1.0f fully opaque. If you provide a value out of these boundaries, it will be restrained to the closest boundary.
shadowOpacity
- the generated shadows opacitypublic int getSize()
Gets the size in pixel used by the renderer to generate shadows.
public void setSize(int shadowSize)
Sets the size, in pixels, used by the renderer to generate shadows.
The size defines the blur radius applied to the shadow to create the fuzziness.
There is virtually no limit to the size. The size cannot be negative. If you provide a negative value, the size will be 0 instead.
shadowSize
- the generated shadows size in pixels (fuzziness)public java.awt.image.BufferedImage createShadow(java.awt.image.BufferedImage image)
Generates the shadow for a given picture and the current properties of the renderer.
The generated image dimensions are computed as following:
width = imageWidth + 2 * shadowSize height = imageHeight + 2 * shadowSize
image
- the picture from which the shadow must be castimage