Java - Zeichnen von text in der Mitte des Bildes
Muss ich schreiben, text in der Mitte des Bildes. Der text zu schreiben ist nicht immer das gleiche.
Den code, den ich verwende ist der hier:
//Here I first draw the image
g.drawImage(img, 22, 15, 280, 225, null);
//I get the text
String text = photoText.getText();
//Set the text color to black
g.setColor(Color.black);
//I draw the string
g.drawString(text, 79.5F, 220.0F);
Das problem ist, dass der text nicht in der Mitte des Bildes, was kann ich tun?
Ich nur ab und zu ziehen Sie den text an der horizontalen Mitte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit einem
JLabel
ist weniger Arbeit, aberFontMetrics
, gezeigt hier, lassen Sie verwalten die geometrie direkt.Eine mögliche Lösung: ziehen Sie das Bild in ein JPanel, sicher zu sein, legen Sie die Abdeckung der preferredsize wie die Größe des Bildes, habe die JPanel verwenden Sie ein GridBagLayout, und platzieren Sie den text in einem JLabel Hinzugefügt werden, ist das JPanel, ohne GridBagConstraints. Dies ist ein Weg, um die Mitte der JLabel im JPanel.
Die einfache Möglichkeit ist die Verwendung eines JLabel mit Icon und Text. Dann legen Sie die horizontale/vertikale position von text zu ZENTRIEREN, und der text ist lackiert in der Mitte des Bildes.
Aus deinem code sieht es aus wie Sie versuchen zu malen, der text am unteren Rand des Bildes. In diesem Fall können Sie das JLabel mit einem Icon wie ein container. Danach kann man das layout etwas wie ein BoxLayout, und fügen Sie ein weiteres label mit dem text.
Kein custom-painting ist erforderlich für einen Ansatz.
Können Sie Bild erstellen Sie ein abbild einer Komponente. Dies setzt Voraus, Sie zeigt Ihr das Bild und den text auf eine GUI.
Oder, wenn man nur das Lesen in ein Bild hinzufügen von text zu dem Bild und dann das Bild speichern, dann müssen Sie erstellen Sie ein BufferedImage und zeichne das Bild an und ziehen Sie dann den text auf. Sie müssen die FontMetrics-Klasse wie bereits erwähnt durch Trashgod. Mein Vorschlag nicht helfen.
ScreenImage
; siehe auch diesImageIO
example..Ich verwendet
TextLayout
, um den text richtig zentriert:Hier ist, wie zu erstellen und speichern Sie die Bild-Datei: