0

TTF フォントを埋め込んでから、Grapics2D で描画しようとしています。フォントを作成できましたが、フォントを setFont に渡す方法が正確にはわかりません。ここで、例外をスローしない新しいフォントを作成します。

private Font pixel = Font.createFont(Font.TRUETYPE_FONT, this.getClass().getResourceAsStream("font/amora.ttf"));

しかし、setFont(); で描画する方法がわかりません。

これが私のコードです:

private static final long serialVersionUID = 1L;
private Timer timer;
private Char Char;
private Font pixel = Font.createFont(Font.TRUETYPE_FONT, this.getClass().getResourceAsStream("font/amora.ttf")); <<<--------

public Board() throws FontFormatException, IOException {

    addKeyListener(new TAdapter());
    setFocusable(true);
    setBackground(Color.BLACK);
    setDoubleBuffered(true);

    Char = new Char();

    timer = new Timer(5, this);
    timer.start();
}


public void paint(Graphics g) {
    super.paint(g);

    Graphics2D g2d = (Graphics2D)g;
    g2d.drawImage(Char.getImage(), Char.getX(), Char.getY(), this);
    g.setColor(Color.white);
    g.setFont( What goes here? );  // <------------
    g.drawString("Amora Engine rev25 (acetech09)", 10, 20);
    g.drawString(Char.getDebugStats(0), 10, 40);
    g.drawString(Char.getDebugStats(1), 10, 60);
    Toolkit.getDefaultToolkit().sync();
    g.dispose();
}


public void actionPerformed(ActionEvent e) {
    Char.move();
    repaint();  
}
}

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

0

あなたはただできる...

g.setFont(pixel);

しかし、あなたはより良い成功を収めるかもしれません

g.setFont(pixel.deriveFont(Font.BOLD, 36f));

のバリエーションです....

また、Graphics作成していないコンテキストを破棄しないでください...

Graphics2D g2d = (Graphics2D)g;
/*...*/
// g.dispose();

または

Graphics2D g2d = (Graphics2D)g.create();
/*...*/
g.dispose();

paintメソッドをオーバーライドすることも嫌いです。JComponentまたはのようなものを使用していると仮定するとJPanel、 を使用する必要がありますpaintComponent。トップレベルのコンテナ(のような)を直接レンダリングしている場合はJFrame、そうしません。あなたの人生を面白くしないダブルバッファリングとコマ枠の問題があります...

私も心配していnew Timer(5, this)ます-5ミリ秒は0に十分近いため、ほとんど違いはありません。のようなものを使用した方が良いでしょう40.25fpsのようなものか、17約60fpsのものが得られます...

于 2013-08-27T06:08:35.543 に答える
0

そのはず

g.setFont( this.pixel );

これが機能しない場合は、次を試してください。

  1. 命令をコメントアウトしsetFontます。
  2. Font.createFontJava 標準フォントへの参照に置き換えます。

考えられる問題を除外します。

于 2013-08-27T06:10:49.433 に答える