View Single Post
  #2 (permalink)  
Old 07-29-2007, 09:15 AM
hardwired hardwired is offline
Senior Member
 
Join Date: Jul 2007
Posts: 1,222
hardwired is on a distinguished road
Text on background image
Code:
import java.awt.*; import java.awt.font.*; import java.awt.image.BufferedImage; import java.io.*; import javax.imageio.ImageIO; import javax.swing.*; public class TextOnBackground extends JPanel { BufferedImage image; String text = "Hello World"; public TextOnBackground(BufferedImage image) { this.image = image; } protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); int w = getWidth(); int h = getHeight(); // Draw image, centered. int x = (w - image.getWidth())/2; int y = (h - image.getHeight())/2; g2.drawImage(image, x, y, this); // Draw text centered over image. Font font = g2.getFont().deriveFont(36f); g2.setFont(font); FontRenderContext frc = g2.getFontRenderContext(); float width = (float)font.getStringBounds(text, frc).getWidth(); LineMetrics lm = font.getLineMetrics(text, frc); float sx = (w - width)/2; float sy = (h + lm.getHeight())/2 - lm.getDescent(); g2.setPaint(Color.red); g2.drawString(text, sx, sy); } public static void main(String[] args) throws IOException { String path = "images/cougar.jpg"; BufferedImage image = ImageIO.read(new File(path)); TextOnBackground test = new TextOnBackground(image); JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().add(test); f.setSize(400,400); f.setLocation(200,200); f.setVisible(true); } }
Reply With Quote