文字の描画
このページには、以下のサンプルを掲載しています。
下の項目をクリックをすると各サンプルにジャンプします。
※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
- 文字の描画
- フォントを指定して文字を表示する
- 文字を画面中央に表示する
- 色付き文字を表示する
- 文字の回転
■文字列の表示
[ サンプルプログラムのソースコード - StringSample01.java - ]
- import javax.swing.JApplet;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.image.BufferedImage;
- public class StringSmaple01 extends JApplet {
- private static final long serialVersionUID = 1L;
- private int width;
- private int height;
- private BufferedImage bi;
- private Graphics2D offs;
- public void init(){
- width = getWidth();
- height = getHeight();
- bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
- offs = (Graphics2D)bi.getGraphics();
- }
- public void paint(Graphics g){
- offs.setBackground(Color.WHITE);
- offs.clearRect(0, 0, width, height);
- offs.setColor(Color.BLACK);
- offs.drawString("文字列表示", 10, 30);
- g.drawImage(bi, 0, 0, this);
- }
- public void update() {
- repaint();
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
アプレット画面に文字列を表示するには、GraphicsオブジェクトのdrawStringメソッドを使います。第一引数に表示する文字列をStringオブジェクトで指定します。
第2、第3引数に表示する座標を指定します。表示座標は、表示文字列を囲む矩形の左下の座標になります。
■フォントを指定して文字を表示する
[ サンプルプログラムのソースコード - StringSample02.java - ]
- import javax.swing.JApplet;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.image.BufferedImage;
- public class StringSmaple02 extends JApplet {
- private static final long serialVersionUID = 1L;
- private int width;
- private int height;
- private BufferedImage bi;
- private Graphics2D offs;
- public void init(){
- width = getWidth();
- height = getHeight();
- bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
- offs = (Graphics2D)bi.getGraphics();
- }
- public void paint(Graphics g){
- offs.setBackground(Color.WHITE);
- offs.clearRect(0, 0, width, height);
- offs.setColor(Color.BLACK);
- offs.setFont(new Font(Font.SERIF,Font.BOLD,72));
- offs.drawString("文字列表示", 10, 80);
- g.drawImage(bi, 0, 0, this);
- }
- public void update() {
- repaint();
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
描画する文字列にフォントを指定するには、文字列を描画する前にGraphicオブジェクトに対してsetFontメソッドを使ってフォントの
設定を行います。setFontメソッドには、引数としてFontオブジェクトを渡します。サンプルでは、SERIFフォントをBOLDスタイル、フォントサイズ72ポイント
で設定しています。(27行目)
■文字を画面中央に表示する
[ サンプルプログラムのソースコード - StringSample03.java - ]
- import javax.swing.JApplet;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.image.BufferedImage;
- public class StringSmaple03 extends JApplet {
- private static final long serialVersionUID = 1L;
- private int width;
- private int height;
- private BufferedImage bi;
- private Graphics2D offs;
- public void init(){
- width = getWidth();
- height = getHeight();
- bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
- offs = (Graphics2D)bi.getGraphics();
- }
- public void paint(Graphics g){
- offs.setBackground(Color.WHITE);
- offs.clearRect(0, 0, width, height);
- offs.setColor(Color.BLACK);
- offs.setFont(new Font(Font.SERIF,Font.BOLD,21));
- FontMetrics fm = offs.getFontMetrics();
- String mes = "文字列表示";
- int strWidth = fm.stringWidth(mes);
- int strHeight = fm.getHeight();
- offs.drawString(mes,
- ( width - strWidth ) / 2, ( height - strHeight ) / 2);
- g.drawImage(bi, 0, 0, this);
- }
- public void update() {
- repaint();
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
文字列を画面中央に表示するためには、まずFontMetricsオブジェクトを取得します。
FontMetricsオブジェクトは、GraphicsオブジェクトのgetFontMetricsオブジェクトから取得できます。
getFontMetricsオブジェクトでは、メソッド実行時点で設定されているFontでFontMetricsオブジェクトが生成されます。
FontMetricsオブジェクトは、FontMetorics生成時に直接Fontを指定することでも取得できます。
FontMetricsオブジェクトでは、描画する文字列の横幅等を取得できます。
サンプルでは31行目で文字列の横サイズ、32行目で縦サイズを取得しています。
文字列の横サイズと縦サイズが取得できたら、次式で文字列の書き出し位置を算出します。
文字列の書き出し位置のX座標 = ( 文字列の横サイズ − 画面の横幅 ) ÷ 2
文字列の書き出し位置のY座標 = ( 文字列の縦サイズ − 画面の縦幅 ) ÷ 2
算出したX、Y座標を元に文字列の表示を行います。(33、34行目)
■色付き文字を表示する
[ サンプルプログラムのソースコード - StringSample04.java - ]
- import javax.swing.JApplet;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.image.BufferedImage;
- public class StringSmaple02 extends JApplet {
- private static final long serialVersionUID = 1L;
- private int width;
- private int height;
- private BufferedImage bi;
- private Graphics2D offs;
- public void init(){
- width = getWidth();
- height = getHeight();
- bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
- offs = (Graphics2D)bi.getGraphics();
- }
- public void paint(Graphics g){
- offs.setBackground(Color.WHITE);
- offs.clearRect(0, 0, width, height);
- offs.setColor(new Color(0x90,0xFF,0x90));
- offs.setFont(new Font(Font.SERIF,Font.BOLD,72));
- offs.drawString("文字列表示", 10, 80);
- g.drawImage(bi, 0, 0, this);
- }
- public void update() {
- repaint();
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
描画する文字列の色を指定するには、文字列を描画する前にGraphicオブジェクトに対してsetColorメソッドを使って描画色の
設定を行います。setColorメソッドには、引数としてColorオブジェクトを渡します。サンプルでは、Color(0x90,0xFF,0x90)の
カラーオブジェクトを生成して設定しています。(26行目)
■文字の回転
[ サンプルプログラムのソースコード - StringSample05.java - ]
- import javax.swing.JApplet;
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.geom.AffineTransform;
- import java.awt.image.BufferedImage;
- public class StringSmaple05 extends JApplet {
- private static final long serialVersionUID = 1L;
- private int width;
- private int height;
- private BufferedImage bi;
- private Graphics2D offs;
- public void init(){
- width = getWidth();
- height = getHeight();
- bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
- offs = (Graphics2D)bi.getGraphics();
- }
- public void paint(Graphics g){
- offs.setBackground(Color.WHITE);
- offs.clearRect(0, 0, width, height);
- offs.setColor(new Color(0x90,0xFF,0x90));
- offs.setFont(new Font(Font.SERIF,Font.BOLD,36));
- FontMetrics fm = offs.getFontMetrics();
- String mes = "文字列表示";
- AffineTransform at = new AffineTransform();
- at.setToRotation(Math.toRadians(45), width / 2, height / 2 );
- offs.setTransform(at);
- offs.drawString(mes,
- ( width - fm.stringWidth(mes) ) / 2,
- ( height - fm.getHeight() ) / 2);
- g.drawImage(bi, 0, 0, this);
- }
- public void update() {
- repaint();
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
四角形の描画(回転)(RectSmaple09.java)のサンプルと同じくイメージ画像を右に45度回転させています。
回転のやり方は、四角形の描画や他の図形のサンプルと同じです。
|
|