2011-01-25 1 views
0

мне нужно напечатать два слова: "" и "В" с помощью Java 2DКак я могу получить ширину смещения шрифта X в java2D?

размер шрифта = 100;

"" семейство шрифтов: Бодони MT Poster Compressed

"B" семейство шрифтов: Arial

Я writed ниже кодов, чтобы сделать это:

BufferedImage image = new BufferedImage(400, 300, BufferedImage.TYPE_INT_RGB); 
Graphics g = image.getGraphics(); 
{//fill bg color 
    g.setColor(new Color(255,255,255)); 
    g.fillRect(0, 0, image.getWidth(), image.getHeight()); 
}   

int FONT_SIZE=100;//set font size 
{//print A 
    g.setColor(new Color(0,0,0)); 
    g.setFont(new Font("Bodoni MT Poster Compressed", Font.PLAIN ,FONT_SIZE));  
    g.drawString("A",0,FONT_SIZE); 
} 
{//print B 
    g.setColor(new Color(0,0,0)); 
    g.setFont(new Font("Arial", Font.PLAIN ,FONT_SIZE));   
    g.drawString("B",FONT_SIZE,FONT_SIZE); 
} 
g.dispose(); 

я получаю результат: enter image description here

, но мне это нужно (Склеить PhotoShop): enter image description here

Я думаю, что вопрос в g.drawString("B",FONT_SIZE,FONT_SIZE);

Как я могу получить шрифт X ширину смещения?

спасибо за помощь :)

ответ

1

После делать SetFont, объявить переменную как

FontMetrics fm = g.getFontMetrics(); 
int strA = fm.stringWidth("A"), 
    strB = fm.stringWidth("B"), 
    strH = fm.getHeight(); 

Теперь, когда у вас есть все размеры букв, установите свои позиции (рх расстояние от левый край к письму, р от вершины до базовой линии шрифта)

int px = ..., py = ... 
g.drawString ("A", px, py); 

И аналогично для «B». Надеюсь, что это поможет, - М.С.

+0

спасибо! Идеально! – Koerr