6

Java フォント クラスと Swing をいじりながら、フォント サイズを負の値に設定しました。

これにより、テキストが上下逆さまに描画されることがわかりました。これはバグですか、それとも機能ですか? この動作が発生する理由を説明できる人はいますか?

やってみて:

import java.awt.Font;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class UpsideDown extends JFrame{

    public UpsideDown(){
        setSize(500,500);
        setContentPane(new Panel());
        setVisible(true);
    }

    public class Panel extends JPanel{
        public void paintComponent(Graphics g){
            Font f = new Font("Sans-Serif", Font.PLAIN, -50);
            g.setFont(f);
            g.drawString("Upside Down", 400, 100);
        }
    }

    public static void main(String args[]){
        new UpsideDown();
    }
}

逆さまに

4

2 に答える 2

6

これが起こっているようです:

  1. Swing は、フォントのグリフの高さでフォント サイズを乗算するため、フォントの高さを下向きに描画します。-50 * glyph_height負 -> 上向きではなく下向きに描画します。
  2. また、フォントで指定されたグリフ幅でフォント サイズを乗算するため、グリフ (文字) の幅も左に描画されます。
于 2013-09-08T09:52:39.930 に答える