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.
/**  *  * @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

Popular posts from this blog

Pewarnaan Objek Geometri Di Java 2D

Konsep Oop Encapsulation

Tugas Komplemen Terakhir