5-5 文字列の描画

Download Report

Transcript 5-5 文字列の描画

5-5 文字列の描画
(1)基本的な文字列描画
A.手順
通常の図形と同様、ペンオブジェクトを生成・設定し、 drawText メソッドで描画する。
ペンオブジェクトで、文字サイズ(setTextSize)を設定したり、
文字幅を測る(measureText)ことができる。
B. 関連するクラス
【Paint クラス】
void setAntialias(boolean a)
文字やラインを滑らかに見せる処理を行う
どうかを a で指定する。
void setTextSize(float s)
文字サイズ(s)の指定
void setColor(int c)
文字色(c)の指定
float measureText(String text) 文字列の幅
float ascent()
ベースラインより上の高さ
float decent()
ベースラインより下の高さ
【Color クラス】
static int rgb
(int r,int g, int b)
static int argb
(int a,int r,int g, int b)
RGBによる色の指定
r:赤、g:緑、b:青
透明度とRGBによる色の指定
a:透明度、r:赤、g:緑、b:青
【View クラス】
int getWidth()
int getHeight()
画面の幅
画面の高さ
package jp.eclipse.string;
C.
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
public class StringActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new StringView(this));
}
}
class StringView extends View{
public StringView(Context context) {
super(context);
}
プログラム例(1)
プログラム例(2)
protected void onDraw(Canvas c){
setBackgroundColor(Color.WHITE);
// 描画オブジェクト生成
Paint p=new Paint(); p.setAntiAlias(true);
// 文字サイズと文字色
p.setTextSize(20); p.setColor(Color.rgb(255, 0, 0));
// 画面サイズ
c.drawText("画面サイズ : "+getWidth()+"×"+getWidth(), 0, 50, p);
// 文字幅
c.drawText("文字幅
: "+(int)p.measureText("A"),0, 50*2, p);
// アセント・ディセント
c.drawText("アセント
: "+(int)p.ascent(),0, 50*3, p);
c.drawText("ディセント : "+(int)p.descent(),0, 50*4, p);
// 文字サイズ12
p.setTextSize(12); p.setColor(Color.rgb(0, 128, 0));
c.drawText("12ドット文字", 0, 50*5, p);
// 文字サイズ24
p.setTextSize(24); p.setColor(Color.rgb(0, 0, 255));
c.drawText("24ドット文字", 0, 50*6, p);
}
}
D. 実行例
指定した文字列が描画されている。
(Java 1.6で動かすこと)
(1)文字列の回転
A.手順
図形の回転と同じようにキャンバスの座標軸を回転する。
B. 関連するクラス
【Paint クラス】
void setAntialias(boolean a)
文字やラインを滑らかに見せる処理を行う
どうかを a で指定する。
void setTextSize(float s)
文字サイズ(s)の指定
void setColor(int c)
文字色(c)の指定
float measureText(String text) 文字列の幅
float ascent()
ベースラインより上の高さ
float decent()
ベースラインより下の高さ
【Color クラス】
static int rgb
(int r,int g, int b)
static int argb
(int a,int r,int g, int b)
RGBによる色の指定
r:赤、g:緑、b:青
透明度とRGBによる色の指定
a:透明度、r:赤、g:緑、b:青
【View クラス】
int getWidth()
int getHeight()
画面の幅
画面の高さ
B. プログラム例(1)
package jp.eclipse.StrRot;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
public class StrRotActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new StringView(this));
}
プログラム例(2)
class StringView extends View{
public StringView(Context context) {
super(context);
}
protected void onDraw(Canvas c){
super.onDraw(c);
setBackgroundColor(Color.WHITE);
int w = c.getWidth();int h = c.getHeight();
int wd = w / 2; int hd = h / 2;
Paint p=new Paint();
p.setAntiAlias(true);
p.setTextSize(20);
p.setColor(Color.rgb(0, 0, 255));
c.translate(wd, hd);
for(int i = 0; i < 8; i++){
c.rotate(45f);
c.drawText(" 文字列の回転", 0, 0, p);
}
}
}
}
D. 実行例
回転した文字列が表示されている。
なお、文字列の先頭は重ならないよう
全角の空白にしてある。
(Java 1.6で動かすこと)