Java - Dessiner le texte au centre de l'image
J'ai besoin d'écrire du texte dans le centre de l'image. Le texte écrit n'est pas toujours le même.
Le code que j'utilise est ici:
//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);
Le problème est que le texte n'est pas au centre de l'image, que puis-je faire?
J'ai seulement besoin de dessiner le texte au centre horizontal.
OriginalL'auteur GhzNcl | 2011-09-06
Vous devez vous connecter pour publier un commentaire.
À l'aide d'un
JLabel
est moins de travail, maisFontMetrics
, montré ici, vous permettra de gérer la géométrie directement.OriginalL'auteur trashgod
Une solution possible: dessiner l'image en Composite, en étant sûr de mettre le panneau de preferredsize que la taille de l'image, ont le Composite utiliser un GridBagLayout, et de placer le texte dans un JLabel qui est ajouté à la Composite, sans GridBagConstraints. C'est une façon de centre de la JLabel dans le Composite.
+1 pour laisser à la disposition du gestionnaire de faire le travail.
Je vais essayer de cette façon. Merci.
Mais de cette manière je ne peux pas enregistrer l'image, je veux dire, si je sauvegarde l'image, le texte ne sera pas enregistré. Je suis à la recherche d'un moyen d'enregistrer le texte en trop. Je veux dire que je dois écrire un texte au centre de l'image, puis enregistrer l'image.
OriginalL'auteur Hovercraft Full Of Eels
Le plus simple est d'utiliser un JLabel avec une Icône et un Texte. Ensuite, réglez l'horizontale/verticale de la position du texte au CENTRE et le texte est peint dans le centre de l'image.
À partir de votre code, il semble que vous essayez de peindre le texte en bas de l'image. Dans ce cas, vous pouvez utiliser le JLabel avec une Icône comme un conteneur. Ensuite, vous pouvez définir la mise en page à quelque chose comme un BoxLayout et ajouter une étiquette avec le texte.
Pas de la peinture custom est requis pour l'une ou l'autre approche.
Vous pouvez utiliser L'Image De L'Écran pour créer une image de n'importe quel composant. Cela suppose que vous êtes l'affichage de l'image et du texte sur une interface graphique.
Ou, si on vous en parle juste de la lecture d'une image ajouter du texte à l'image, puis enregistrer l'image, puis vous aurez besoin pour créer un BufferedImage et dessiner l'image sur elle et puis de dessiner le texte. Vous aurez besoin d'utiliser la classe FontMetrics comme mentionné par Trashgod. Ma suggestion ne va pas aider.
+1 pour
ScreenImage
; voir aussi cetteImageIO
example..Je ne comprends pas votre question. Je t'ai donné le code de travail. Vous seul pouvez décider si elle fait ce que vous voulez. J'ai aussi donné un lien vers ScreenImage qui montre comment l'utiliser visibles ou non visibles composants.
OriginalL'auteur camickr
J'ai utilisé
TextLayout
pour obtenir le texte correctement centré:Voici comment créer et enregistrer l'image dans un fichier:
OriginalL'auteur Matthias Braun