Question

Utilisation Je Canvas.drawText pour dessiner une chaîne de caractères sur une Canvas . Le problème est que je veux dessiner un rectangle avant afin que les apparaisse texte centré sur le rectangle. Mais je frappe un vrai problème. Le fourni x et y coordonnées drawText fait ne sont pas de " en haut à gauche " coin du texte réel , mais plutôt sur la ligne où les personnages commencent. Il existe une méthode Paint.getTextBounds qui retourne un rectangle "avec l'origine implicite" à (0,0) du texte qui serait tiré. Le problème est que l'origine est à (0,0) . La largeur et la hauteur de cette boîte sont corrects, mais je ne sais pas comment placer son coin supérieur gauche au coin en haut à gauche de la chaîne qui est dessiné sur la toile. Je suppose que je devrais utiliser FontMetrics , mais étant donné que beaucoup des valeurs FontMetrics renvoie Je ne suis pas sûr de savoir comment les utiliser sont en situation irrégulière pour mon but.

Était-ce utile?

La solution

J'ai fini par faire

FontMetrics fm = new FontMetrics();
paint.setTextAlign(Paint.Align.CENTER);
paint.getFontMetrics(fm);
canvas.drawText(text, x, y + -(fm.ascent + fm.descent) / 2, paint);

Ce qui tire en fait le texte centré sur x , y . Avant que je dessine un rectangle centrée à x , y avec une largeur paint.measureText ( text )

Autres conseils

rectangle

essayez de dessiner en utilisant

canvas.drawRect(x, y - Paint.GetTextSize(), x + Paint.measureText("text"), y, Paint);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top