import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.font.*; public class StillLife extends Canvas { public StillLife() { setBackground(Color.white); } public void paint(Graphics g) { Graphics2D g2; g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); int w = getSize().width; int h = getSize().height; AffineTransform at = new AffineTransform(); at.setToTranslation(30, 50); AffineTransform fontAT = new AffineTransform(); fontAT.shear(0.2, 0.0); FontRenderContext frc = g2.getFontRenderContext(); Font theFont = new Font("Times", Font.BOLD, w/25); String s = new String("Still Life with Text"); TextLayout tstring = new TextLayout(s, theFont, frc); Font theDerivedFont = theFont.deriveFont(fontAT); String str = new String("Still Life with Slanted Text"); TextLayout tstring2 = new TextLayout(str, theDerivedFont, frc); //Draw regular string g2.setColor(Color.blue); g2.transform(at); tstring.draw(g2, (float)0, (float)0); //Draw string with shear transformation on the font g2.setColor(Color.green); g2.transform(at); tstring2.draw(g2, (float)0, (float)0); } public static void main(String s[]) { WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} public void windowClosed(WindowEvent e) {System.exit(0);} }; Frame f = new Frame("2D Text"); f.addWindowListener(l); f.add("Center", new StillLife()); f.pack(); f.setSize(new Dimension(600, 175)); f.show(); } }