Salut,
Je suis face à un truc chiant: je tente de render une image (carré, 200x200), et je veux insérer 1 caractère monospace prenant précisément de 50x50 à 150x150 (c.f. image de grille). j’ai tenté plusieurs méthodes, notamment de faire du trial and error, en regardant la taille théorique obtenue à chaque tour, mais impossible de correctement scale.
// Le code de trial-and-error
fun getFontForSize(g: Graphics, pixelSize: Int): Font {
var size = pixelSize
while (true) {
val f = Font(Font.MONOSPACED, Font.PLAIN, size)
val obtainedHeight = g.getFontMetrics(f).height
if (obtainedHeight < pixelSize) { size++ }
else { return f }
}
}
// Le code (morceau de main) de draw
g.font = getFontForSize(g, 100)
g.color = Color.BLACK
g.drawString("I", 50, 150)
Il faut noter que c’est fait pour tourner sur un environnement serveur, donc pas de serveur graphique.
L’image obtenue est la suivante.
Le but est que la lettre prenne la plus grande taille possible (100% centrée) dans le carré montré par le quadrillage.
Une idée ?
+0
-0