Copyright Derek O' Reilly, Dundalk Institute of Technology (DkIT), Dundalk, Co. Louth, Ireland.
Rendering hints request Java 2D how you would like rendering to be performed. Rendering hints trade-off quality and performance. All rendering hints are set as follows:
public void setRenderingHint(RenderingHints.Key key, Object value)
Specifying a rendering hint does not guarantee that it will be used, as not all platforms support all rendering hints.
When a rendering hint is set to default, the platform rendering default is used.
The text antialiasing keyword is:
RenderingHints.KEY_TEXT_ANTIALIAS
Antialiasing can be turned on or off. If it is turned on, it provides a much
better image quality, but rendering takes longer.
RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT RenderingHints.VALUE_TEXT_ANTIALIAS_ON RenderingHints.VALUE_TEXT_ANTIALIAS_OFF
RenderingHints_AntialiasText_Demo Example (Run Applet)
import java.awt.*;
import javax.swing.*;
public class RenderingHints_AntialiasText_Demo extends JApplet
{
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel
{
public View()
{
super();
}
@Override
protected void paintComponent(Graphics g)
{
final Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("Times New Roman", Font.ITALIC, 250));
// draw without anti-aliasing
g2.drawString("A", 20, 200);
// draw with anti-aliasing
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2.drawString("A", 180, 200);
}
}
}
The shape antialiasing keyword is:
RenderingHints.KEY_ANTIALIAS
Antialiasing can be turned on or off. If it is turned on, it provides a much better image quality, but rendering takes longer.
RenderingHints.VALUE_ANTIALIAS_DEFAULT RenderingHints.VALUE_ANTIALIAS_ON RenderingHints.VALUE_ANTIALIAS_OFF
RenderingHints_AntialiasShapes_Demo Example (Run Applet)
import java.awt.*;
import javax.swing.*;
public class RenderingHints_AntialiasShapes_Demo extends JApplet
{
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel
{
public View()
{
super();
}
@Override
protected void paintComponent(Graphics g)
{
final Graphics2D g2 = (Graphics2D) g;
final int gap = 5;
// draw without antialiasing
g2.drawOval(0, 0, getWidth() / 2 - gap, getHeight() - gap);
// draw with antialiasing
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.drawOval(getWidth() / 2, 0, getWidth() / 2 - gap, getHeight() - gap);
}
}
}
RenderingHints.KEY_INTERPOLATION
Various hints can be used to control image scaling quality. The fastest, but poorest quality, scaling is:
RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR
It can be particularly bad if you are scaling down, where it can result in a lot of the original information being lost in the scaled image.
A reasonably good quality scaling with reasonably fast processing is:
RenderingHints.VALUE_INTERPOLATION_BILINEAR
For best quality and the slowest processing, use:
RenderingHints.VALUE_INTERPOLATION_BICUBIC
RenderingHints_Scale_Demo Example (Run Applet)
import java.awt.*;
import javax.swing.*;
public class RenderingHints_Scale_Demo extends JApplet
{
@Override
public void init()
{
this.setContentPane(new View());
}
public class View extends JPanel
{
public View()
{
super();
}
@Override
public void paintComponent(Graphics g)
{
final Image image = new ImageIcon(getClass().getClassLoader().getResource("images/moon.gif")).getImage();
final Graphics2D g2 = (Graphics2D) g;
final int width = getWidth();
final int height = getHeight();
// default
g2.drawImage(image, 0, 0, width / 2, height / 2, this);
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
g2.drawImage(image, width / 2, 0, width / 2, height / 2, this);
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(image, 0, height / 2, width / 2, height / 2, this);
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
g2.drawImage(image, width / 2, height / 2, width / 2, height / 2, this);
}
}
}
Other rendering hints include:
Copyright Derek O' Reilly, Dundalk Institute of Technology (DkIT), Dundalk, Co. Louth, Ireland.