Czy istnieje sposób obliczania długości łańcucha w pikselach, biorąc pod uwagę pewien obiekt java.awt.Font
, który nie korzysta z żadnych komponentów GUI?Długość łańcucha w pikselach w języku Java
12
A
Odpowiedz
10
który nie korzysta z żadnych komponentów GUI?
To zależy od tego, co masz na myśli. Zakładam, że masz na myśli, że chcesz to zrobić bez otrzymania HeadlessException
.
Najlepszy sposób jest z BufferedImage
. AFAIK, to nie rzuci HeadlessException
:
Font font = ... ;
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
FontMetrics fm = img.getGraphics().getFontMetrics(font);
int width = fm.stringWidth("Your string");
Inny niż przy użyciu czegoś takiego, nie sądzę, jest to możliwe. Potrzebujesz kontekstu graficznego, aby utworzyć FontMetrics
i podać informacje o rozmiarze czcionki.
3
Można użyć obiektu Graphics2D
dostać granice czcionek (w tym szerokość):
Graphics2D g2d = ...
Font font = ...
Rectangle2D f = font.getStringBounds("hello world!", g2d.getFontRenderContext());
Ale to zależy od tego jak dostaniesz przedmiot Graphics2D
(na przykład z Image
).
2
Daje to dla mnie wynik (137,0, 15,09375). Nie mam pojęcia, jakie są jednostki, ale z pewnością wygląda to proporcjonalnie i nie używa bezpośrednio Graphics2D.
Font f = new Font("Ariel", Font.PLAIN, 12);
Rectangle2D r = f.getStringBounds("Hello World! Hello World!", new FontRenderContext(null, RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT, RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
System.out.println("(" + r.getWidth() + ", " + r.getHeight() + ")");
Czy to dla czcionki Czcionki? – Link19
Zobacz także [tę odpowiedź] (http://stackoverflow.com/questions/6295084/cut-out-image-in-shape-of-text/6296381#6296381) dla używania 'GlyphVector'. Umieszcza ostateczny obraz w GUI, ale tylko po to, żeby go wyświetlić. –