BufferedImage : superposition et retour de texte
Incompréhension des coordonnées de dessin de texte
Dans votre code, le texte n'apparaît pas comme prévu car vous faites référence à de mauvaises coordonnées pour drawString(). Il utilise (x, y) comme ligne de base pour dessiner le caractère le plus à gauche d'une chaîne, et non la position absolue du texte.
Ajustement de la ligne de base du texte
Pour Pour compenser cela, ajustez votre coordonnée y pour tenir compte de la hauteur de la police :
gO.drawString(this.text, this.x, this.y + 12);
Cela suppose que vous utilisez une police avec une ligne de base de 12px. Si nécessaire, vous pouvez ajuster le décalage en conséquence.
Considérations sur le modèle de couleur
Il convient de noter que vous pouvez également rencontrer des incompatibilités dues aux modèles de couleur utilisés dans l'image. Pensez à rendre l'image avec un modèle de couleur approprié, puis à la modifier in situ à l'aide de la méthode ci-dessous :
private BufferedImage process(BufferedImage image) { Graphics2D g2d = image.createGraphics(); // Code to overlay text... g2d.dispose(); return image; }
Dans cette approche, le texte est dessiné directement sur l'image existante, garantissant ainsi la compatibilité.
Code entièrement corrigé
protected BufferedImage Process2(BufferedImage image){ Graphics2D gO = image.createGraphics(); gO.setColor(Color.red); gO.setFont(new Font( "SansSerif", Font.BOLD, 12 )); gO.drawString(this.text, this.x, this.y + 12); System.err.println(this.text+this.x+this.y); return image; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!