Gráficos de Java de fuente - Cómo asegurarse de que los personajes se encuentran en el área en particular?

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

Pregunta

Tengo una imagen. En la parte inferior de la imagen, me gustaría crear una banda de color decir, de la altura de 100. Ya he terminado con la creación de la tira y, básicamente, puedo escribir cadenas en esa parte (por ejemplo, derechos de autor de la imagen, etc). La siguiente es mi método.

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;
}

Sé que la forma en que he calculado los valores de x e y para el cordón () método es sólo un simple y tiene un problema de que el texto se sale de los límites veces (dependiendo del tamaño de la imagen y la longitud del texto)

Me gustaría asegurarse de que el texto de la imagen en la tira inferior que he definido siempre se alinea con la parte derecha (límite) de la imagen, pero no va fuera de límite. ¿Cómo puedo lograr eso? Recuerde que la longitud del texto puede ser dinámico.

¿Los expertos gráficos Java por ahí compartir sus ideas sobre cómo esto se puede lograr?

¿Fue útil?

Solución

String msg = "(c)www.sanjaal.com";
int margin = 2;
g.drawString(msg, getWidth() - g.getFontMetrics().stringWidth(msg) - margin, strY);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top