Java Graphics polices - Comment assurez-vous que les personnages se trouvent dans une zone en particulier?

StackOverflow https://stackoverflow.com/questions/1773137

Question

J'ai une image. Sur la partie inférieure de l'image, je voudrais créer une bande colorée dire, de la hauteur 100. Je suis déjà fait avec la création de la bande et je peux écrire essentiellement des chaînes dans cette partie (par exemple le droit d'auteur de l'image, etc.). Ce qui suit est ma méthode.

public static BufferedImage captionMyImage(BufferedImage sourceImage) {

    int height=sourceImage.getHeight();
    int width=sourceImage.getWidth();

    System.out.println("Image Height: "+height);
    System.out.println("Image Width: "+width);

    int min=20; //fifty pixels
    int newHeight=(int) (0.1*height>min ? 1.1*height : height+min);
    int difference=newHeight-height;
    System.out.println("new height:"+newHeight);
    System.out.println("Difference:"+difference);
    BufferedImage bgImage=new BufferedImage(width,newHeight,BufferedImage.TYPE_INT_RGB);



    /**Create a Graphics  from the background image**/
    Graphics2D g = bgImage.createGraphics();

    //g.drawRect(0, 0, width, ((int)0.1*height>min) ? (int)1.1*height : height+min);
    g.setColor(Color.RED);
    g.fillRect(0, 0, bgImage.getWidth(), bgImage.getHeight());
    g.setColor(Color.YELLOW);



    /**Set Antialias Rendering**/
    g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
    /**
     * Draw background image at location (0,0)
     * You can change the (x,y) value as required
     */
    g.drawImage(sourceImage, 0, 0, null);

    int strX=sourceImage.getWidth()/2;
    int strY=sourceImage.getHeight()+difference/2;
    System.out.println("X: "+strX);
    System.out.println("Y: "+strY);
    g.setFont(new Font(g.getFont().getName(),Font.PLAIN,20));
    g.drawString("(c)www.sanjaal.com",strX ,strY);

    g.dispose();

    return bgImage;
}

Je sais que la façon dont je l'ai calculé les valeurs de x et y pour la méthode drawString () est juste un simple et a un problème que le texte passe en dehors de la limite parfois (selon la taille de l'image et la longueur du texte)

Je voudrais vous assurer que le texte dans l'image sur la bande inférieure que je l'ai défini aligne toujours à la partie droite (limite) de l'image, mais ne va pas de limite. Comment puis-je y parvenir? Rappelez-vous la longueur du texte peut être dynamique.

Est-ce que les experts graphiques Java et partager vos idées là-bas sur la façon dont cela peut être réalisé?

Était-ce utile?

La solution

String msg = "(c)www.sanjaal.com";
int margin = 2;
g.drawString(msg, getWidth() - g.getFontMetrics().stringWidth(msg) - margin, strY);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top