Java Code
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.font.*;
public class FontImage extends JApplet
{
Image backdrop;
ImgTextPanel starPanel;
public void init()
{
backdrop = getImage( getCodeBase( ), "fan.gif" );
starPanel = new ImgTextPanel( "Elizabeth", backdrop );
add(starPanel, BorderLayout.CENTER);
}
}
class ImgTextPanel extends JPanel
{
String text;
Image img;
int w, h;
public ImgTextPanel( String txt, Image image) {
img = image;
text = txt;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.white);
w = getSize().width;
h = getSize().height;
Graphics2D g2;
g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
FontRenderContext frc = g2.getFontRenderContext();
Font myfont = new Font("Helvetica", 1, w/8);
TextLayout textTl = new TextLayout(text, myfont, frc);
AffineTransform transform = new AffineTransform();
Shape outline = textTl.getOutline(null);
Rectangle r = outline.getBounds();
transform = g2.getTransform();
transform.translate(w/2-(r.width/2), h/2+(r.height/2));
g2.transform(transform);
g2.setColor(Color.blue);
g2.draw(outline);
g2.setClip(outline);
g2.drawImage(img, r.x, r.y, r.width, r.height, this);
}
}