OVH Cloud OVH Cloud

Incliné un texte dans une image.

3 réponses
Avatar
puimp
Bonjour.
Je suis en train de faire deux-trois petites classes de generation
d'images contenant des formes simples , et j'aimerais bien pouvoir y
integrer du texte, mais incliné. j'ai essayé d'appliquer les infos
fournie sur cette page
(http://javaalmanac.com/egs/java.awt/RotateText.html?l=find) dans un
test, mais ça n'a rien donné (enfin, si : une image vide). Si
quelqu'un pouvait m'aider.

P.S : le code utilisé pour le test :
public class Test
{
public static void main(String[] args) throws Exception
{
//On commence par créer l'image tampon
BufferedImage buffer =
new BufferedImage(300,
200,
BufferedImage.TYPE_INT_RGB);
//On recupere l'instance qui va nous permettre de tracer ce
tableau
Graphics2D g = (Graphics2D)buffer.createGraphics();

g.setColor(Color.WHITE);
g.fillRect(0,0,300,200);
g.setColor(Color.BLACK);
AffineTransform at = new AffineTransform();
at.setToRotation(Math.PI/2.0);
g.setTransform(at);
g.drawString("test",50,50);
ImageIO.write(buffer, "png", new
File("/home/pp150018/test.png"));
}

3 réponses

Avatar
Phildes
C'est peut-être un problème de point d'origine. En fait, le point d'origine
est 0,0. en dessinant le texte en 50x50, il le balance d'1/4 de tours
vers -50x50. Le texte s'écrit à la gauche de votre image.

Essayer de remplacer "PI/2.0" par "PI/9.0" ou "PI/18.0", puis faites varier.
Vous verrez alors si c'est bien un problème d'origine.



Teocali a écrit dans le message :

Bonjour.
Je suis en train de faire deux-trois petites classes de generation
d'images contenant des formes simples , et j'aimerais bien pouvoir y
integrer du texte, mais incliné. j'ai essayé d'appliquer les infos
fournie sur cette page
(http://javaalmanac.com/egs/java.awt/RotateText.html?l=find) dans un
test, mais ça n'a rien donné (enfin, si : une image vide). Si
quelqu'un pouvait m'aider.

P.S : le code utilisé pour le test :
public class Test
{
public static void main(String[] args) throws Exception
{
file://On commence par créer l'image tampon
BufferedImage buffer > new BufferedImage(300,
200,
BufferedImage.TYPE_INT_RGB);
file://On recupere l'instance qui va nous permettre de tracer ce
tableau
Graphics2D g = (Graphics2D)buffer.createGraphics();

g.setColor(Color.WHITE);
g.fillRect(0,0,300,200);
g.setColor(Color.BLACK);
AffineTransform at = new AffineTransform();
at.setToRotation(Math.PI/2.0);
g.setTransform(at);
g.drawString("test",50,50);
ImageIO.write(buffer, "png", new
File("/home/pp150018/test.png"));
}


Avatar
Phildes
Au fait, si c'est bien ce problème, la solution est :
at.setToRotation(Math.PI/2.0, 50.0, 50.0);
Dans cette méthode on indique le point origine de la rotation.

Bien cordialement

Phildes
Avatar
puimp
C'est exactement ça !

Merci a vous deux.