コンテクスト
次のコードは「見栄えの良い」ものを生成します"Hello World"
graphics.drawString("Hello World", 30, 30);
さて、代わりに、各文字列を描画し、fontMetrics.getCharWidth(c)
それまでに手動で進めると、狭く/混雑したように見え"Hello World"
ます。
質問
なぜこれが起こるのですか?各キャラクターの「前進」以外に、キャラクターの間隔を空けるために他に何を追加する必要がありますか?
次のコードは「見栄えの良い」ものを生成します"Hello World"
graphics.drawString("Hello World", 30, 30);
さて、代わりに、各文字列を描画し、fontMetrics.getCharWidth(c)
それまでに手動で進めると、狭く/混雑したように見え"Hello World"
ます。
なぜこれが起こるのですか?各キャラクターの「前進」以外に、キャラクターの間隔を空けるために他に何を追加する必要がありますか?
グラフィックのどのメソッドを使用してcharをレンダリングしますか?これが私が書いたコードで、完全に実行され、両方のレンダリング方法の結果はまったく同じです。コードのその部分を共有していただけませんか?
public class Test1 extends JPanel{
public static void main(String[] args) {
Test1 test = new Test1() ;
JFrame frame = new JFrame() ;
frame.add(test) ;
frame.setSize(800 , 600) ;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
frame.setVisible(true) ;
}
@Override
public void paint(Graphics g) {
String text = "This is a text , Hello World!" ;
g.drawString(text, 0, 100) ;
drawString(text, g, 0, 120) ;
}
private void drawString (String s , Graphics g , int x , int y){
for (int c1=0 ; c1 < s.length() ; c1++){
char ch = s.charAt(c1);
g.drawString(ch+"", x, y) ;
x+= g.getFontMetrics().charWidth(ch) ;
}
}
}