Bonjour à tous
Je galère beaucoup avec le Graphics2D.
Mon nouveau problème est sur le calcul de la taille en pixel d'une chaine de caractère.
pour le calcul de la taille de ma chaine , j'utilise le code suivant:
1 2 3 4 5 6
|
Graphics2D g = (Graphics2D)graph.getGraphics();
g.setFont(f);
FontMetrics metrics = g.getFontMetrics();
int width = metrics.stringWidth(value);
int height = metrics.getHeight()+metrics.getMaxDescent(); |
Cela fonctionne très bien tant que je ne touche pas au scaling
J'avais besoin d'implanter un scaling pour faire du zoom sur mon graphique.
Lorsque je change la valeur de zoom par la fonction
g2.scale(zoomFactor.zoomFactor());
L'affichage me tronque une partie de ma chaine. c'est comme si le scaling intervenait sur le calcul de la taille de la chaine
Si quelqu'un a une idée, je suis preneur.
ci joint le code complet de ma fonctionne paint
1 2 3 4 5 6 7 8 9 10 11 12 13
| public void paint(Graphics g) {
TextGraphCell cell = (TextGraphCell) view.getCell();
Rectangle2D bounds = GraphConstants.getBounds(cell.getAttributes());
Graphics2D g2 = (Graphics2D) g;
g.setColor(new Color(0, 0, 0));
g2.setPaint(Color.black);
g2.setFont(GraphConstants.getFont(cell.getAttributes()));
FontMetrics metrics = g.getFontMetrics();
int descent = metrics.getMaxDescent();
g2.drawString(cell.getStringValue(), 0, (int) bounds.getHeight()-descent);
} |
Merci d'avance
Cordialement
Partager