Hallo zusammen,
versuche gerade einen Text exakt zu positionieren.
Vertikal ist das kein Problem, aber offenbar gibt es in Bezug auf die x-Achse ein Offset, das von dem jeweiligen Zeichen/String abhängt. Positioniere ich z.B. ein "schmales" Zeichen wie "I" oder "1" ist das Offset groß. Bei breiten Zeichen ist es hingegen kleiner.
Anbei ein Beispielcode:
Eigentlich sollte die rote Box die Ziffer exakt umranden - tut sie aber aufgrund des Offsets nicht.
Wie kann ich also den Text ohne Offset zeichnen oder das Offset berechnen und den Text entsprechend verschieben? ???:L
versuche gerade einen Text exakt zu positionieren.
Vertikal ist das kein Problem, aber offenbar gibt es in Bezug auf die x-Achse ein Offset, das von dem jeweiligen Zeichen/String abhängt. Positioniere ich z.B. ein "schmales" Zeichen wie "I" oder "1" ist das Offset groß. Bei breiten Zeichen ist es hingegen kleiner.
Anbei ein Beispielcode:
Java:
import java.awt.*;
import java.awt.font.*;
import javax.swing.*;
public class AlignmentExample extends JPanel {
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
FontRenderContext frc = g2.getFontRenderContext();
TextLayout tl = new TextLayout("1", new Font("Arial", Font.BOLD, 150), frc);
int xPos = 100, yPos = 150;
double width = tl.getBounds().getWidth();
double height = tl.getBounds().getHeight();
g2.setColor(Color.black);
tl.draw( g2, xPos, yPos );
g2.setColor(Color.red);
g2.drawRect( (int)xPos, (int)(yPos-height), (int)width, (int)height);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new AlignmentExample());
frame.setSize(300, 250);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Eigentlich sollte die rote Box die Ziffer exakt umranden - tut sie aber aufgrund des Offsets nicht.
Wie kann ich also den Text ohne Offset zeichnen oder das Offset berechnen und den Text entsprechend verschieben? ???:L