Text Dan Font Di Java 2D
Java 2D menyediakan kumpulan font dan text yang sanggup dimanipulasi sedemikian rupa. Text digambarkan dengan serangkaian karakter dengan pola pengkodean standar sepeti ASCII dan Unicode. Penggambaran bentuk dari karakter ditentukan oleh font standar. Geometri yang menggambarkan bentuk karakter dikenal dengan glyph. Jadi, font ialah kumpulan dari glyph untuk seluruh abjad.
Penggunaan font di Java 2D sanggup dilakukan dengan memanggil method setFont dan drawstring di Graphics2D. Font yang tersedia di lingkungan tergantung pada platform. Di Java mendukung beberapa font diantaranya :
Serif
SanSerif
Monospaced
Dialog
DialogInput
Selain itu terdapat parameter style yang memungkinkan untuk memanipulasi bentuk font diantaranya :
PLAIN
ITALIC
BOLD
Berikut ini beberapa teladan source code untuk mendemonstrasikan penggunaan font.
Outputnya :
Output :
Outputnya :
Penggunaan font di Java 2D sanggup dilakukan dengan memanggil method setFont dan drawstring di Graphics2D. Font yang tersedia di lingkungan tergantung pada platform. Di Java mendukung beberapa font diantaranya :
Serif
SanSerif
Monospaced
Dialog
DialogInput
Selain itu terdapat parameter style yang memungkinkan untuk memanipulasi bentuk font diantaranya :
PLAIN
ITALIC
BOLD
Berikut ini beberapa teladan source code untuk mendemonstrasikan penggunaan font.
/** * * @author Wim Sonevel */ import java.awt.*; import java.awt.geom.*; import javax.swing.*; public class FontFun1 extends JApplet{ public static void main(String[] args){ JFrame frame = new JFrame(); frame.setTitle("Fonts"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JApplet applet = new FontFun1(); applet.init(); frame.getContentPane().add(applet); frame.pack(); frame.setVisible(true); frame.setLocationRelativeTo(null); } @Override public void init(){ JPanel panel = new FontPanel(); getContentPane().add(panel); } } class FontPanel extends JPanel{ FontPanel(){ setPreferredSize(new Dimension(640, 480)); setBackground(Color.white); } @Override public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; //menentukan nama, bentuk dan ukuran font Font font = new Font("Serif", Font.BOLD, 75); //transformasi affine AffineTransform tx = new AffineTransform(); tx.shear(0.5, 0.1); //font turunan hasil modifikasi dengan tranformasi affine g2.setFont(font.deriveFont(tx)); g2.drawString("Wim Sonevel", 100, 225); } }
Outputnya :
/** * * @author Wim Sonevel */ import java.awt.*; import java.awt.font.FontRenderContext; import java.awt.font.GlyphVector; import java.awt.geom.*; import javax.swing.*; public class FontFun2 extends JApplet{ public static void main(String[] args){ JFrame frame = new JFrame(); frame.setTitle("Fonts"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JApplet applet = new FontFun2(); applet.init(); frame.getContentPane().add(applet); frame.pack(); frame.setVisible(true); frame.setLocationRelativeTo(null); } @Override public void init(){ JPanel panel = new FontPanel2(); getContentPane().add(panel); } } class FontPanel2 extends JPanel{ FontPanel2(){ setPreferredSize(new Dimension(640, 480)); setBackground(Color.white); } @Override public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; Font font = new Font("Serif", Font.BOLD|Font.PLAIN|Font.ITALIC, 75); FontRenderContext frc = g2.getFontRenderContext(); GlyphVector gv = font.createGlyphVector(frc, "Wim Sonevel"); Shape glyph = gv.getOutline(100,100); g2.setStroke(new BasicStroke(3.0f)); g2.rotate(Math.toRadians(45), 100, 100); g2.draw(glyph); g2.setColor(Color.blue); g2.fill(glyph); } }
Output :
/** * * @author Wim Sonevel */ import javax.swing.*; import java.awt.*; import java.awt.font.*; public class FontFun3 extends JApplet{ public static void main(String[] args) { JFrame frame = new JFrame(); frame.setTitle("Font Fun 3"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JApplet applet = new FontFun3(); applet.init(); frame.getContentPane().add(applet); frame.pack(); frame.setVisible(true); } @Override public void init(){ JPanel panel = new FontPanel3(); getContentPane().add(panel); } } class FontPanel3 extends JPanel{ public FontPanel3(){ setPreferredSize(new Dimension(600, 500)); setBackground(Color.white); } @Override public void paintComponent(Graphics g){ Graphics2D g2 = (Graphics2D)g; Font font = new Font("Serif",Font.BOLD,50); //font render FontRenderContext fr = g2.getFontRenderContext(); GlyphVector gv = font.createGlyphVector(fr, "Wim Sonevel"); Shape text = gv.getOutline(100, 100); g2.setStroke(new BasicStroke(5.0f)); g2.setColor(Color.red); g2.rotate(Math.toRadians(30),100,100); g2.draw(text); } }
Outputnya :
Comments
Post a Comment