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); } }