forcels
Messages postés64Date d'inscriptionmercredi 10 mai 2006StatutMembreDernière intervention27 août 2010
-
30 oct. 2007 à 13:36
forcels
Messages postés64Date d'inscriptionmercredi 10 mai 2006StatutMembreDernière intervention27 août 2010
-
30 oct. 2007 à 15:03
Hello,
Je crée une application qui permet de dessiner, comme mspaint. Je dois faire en sorte de pouvoir insérer du texte dans le dessin.
Pour cela, je dessine un rectangle, qui sert à délimiter ma zone de texte. Lorsque je clique ailleurs que sur la zone de texte, j'efface ce rectangle et il ne reste plus que le texte.
Voici comment j'ai dessiné mon rectangle:
/**
* Cette méthode permet de dessiner le rectangle se trouvant autour du texte, lors de l'insertion.
* @param g2 Graphics2D
*/
public void rectangle_texte(int xStart, int yStart){
this.xStart = xStart;
this.yStart = yStart;
g2.setStroke(getStrokeTexte());
g2.setColor(Color.GRAY);
g2.drawRect(xStart,yStart,rectWidth,rectHeight);
g2.fillRect(xStart-4, yStart-4, CARRE_PETIT_WIDTH, CARRE_PETIT_HEIGHT);
g2.fillRect(xStart-4, yStart+rectHeight-4, 8, 8);
g2.fillRect(xStart+rectWidth-4, yStart-4, 8, 8);
g2.fillRect(xStart+rectWidth-4, yStart+rectHeight-4, 8, 8);
/**
* Cette méthode définit le style de trait.
* @return Stroke
*/
private Stroke getStrokeTexte(){
float [] tab = null;
tab = new float[]{12,12};
return new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 3, tab, 0);
}
Après, pour effacer ce rectangle, j'ai pensé à la méthode setXORMode, mais je ne parviens pas à l'effacer.
Voici comment je l'ai utilisée:
// Permet d'effacer un élément de la zone de dessin
public void efface(){
System.out.println("efface");
g2 = (Graphics2D)drawpanel.getGraphics();
g2.setXORMode(drawpanel.getBackground());
g2.dispose();
}
g2 Graphics2D || drawpanel panel sur lequel je dessine
Autre précision: le panel est blanc et mon rectangle est dessiné en gris (Color.GRAY).
Est-ce que aurait une idée pour effacer ce rectangle ?
forcels
Messages postés64Date d'inscriptionmercredi 10 mai 2006StatutMembreDernière intervention27 août 2010 30 oct. 2007 à 15:03
J'ai omis de préciser que mon rectangle est blanc, avec uniquement un stroke gris.
Autrement j'ai effectué quelques tests avec la méthode setXORMode, mais elle marche apparemment que pour du noir/blanc...
Je dois encore faire attention au fait que si une autre forme est dessinée dessous, elle ne doit pas s'effacer.
Quelqu'un connaitrait une solution pour effacer ce rectangle ?
Est-ce que si je met en transparence mon rectangle, est-ce que ça peut fonctionner (le stroke devient-il aussi transparent?) ?