Maison >Java >javaDidacticiel >Pourquoi ma superposition de texte n'apparaît-elle pas correctement sur une image tamponnée ?

Pourquoi ma superposition de texte n'apparaît-elle pas correctement sur une image tamponnée ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-02 03:05:28779parcourir

Why Doesn't My Text Overlay Appear Correctly on a BufferedImage?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn