J'essaie de dessiner un texte sur le centre d'un bitmap, mais je ne peux pas le faire, même si j'avais utilisé Align.center. Le code est: Qu'est-ce que je fais mal? P> p>
3 Réponses :
Où est le dessin de texte? Le problème pourrait être depuis que vous avez changé le texte s'aligner sur Align.center. Votre code calculant X et Y suppose que le rendu du texte utilise Align.Left, je crois. P>
Utilisez SettextStaLign (Align.center) et rendu au centre bitmap réel ou utilisez SettextStaLign (Align.Left) et utilisez les calculs X et Y actuels que vous utilisez. P>
C'est beaucoup plus simple que vous ne le pensez. P>
Dessinez le texte à la moitié de la largeur et de la hauteur bitmap code> s (point central) en combinaison avec La propriété d'alignement prendra soin du reste. P> peinture.SetTextaLign (align.center) code>. p>.
Ce seul centre du texte horizontalement, mais pas verticalement
Je suppose que rien des réponses données ci-dessus ne suffisent donc donc je posterai ma réponse. Essayez les gars, cela fonctionnera sur tous les appareils et ne sera pas complexe du tout:
String text = "Text"; //your string Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(activity.getResources().getColor(R.color.white)); paint.setTextSize(30); // draw text to the Canvas center Rect boundsText = new Rect(); paint.getTextBounds(text, 0, text.length(), boundsText); int x = (bitmap.getWidth() - boundsText.width()) / 2; int y = (bitmap.getHeight() + boundsText.height()) / 2; canvas.drawText(text, x, y, paint);
C'est presque correct, mais cela ne fonctionnera pas pour "I", "1", ".", ... - Celles-ci seront plus à gauche et échoueront de manière misérablement sur "-" (sera légèrement à gauche et chemin au-dessus du milieu). Essayez d'utiliser Canvas.Drawtext (Texte, X - Loutis.Left, Y - Bounds.bottom, Peinture); Ensuite, le texte sera vraiment au milieu.
Le passage de X et Y dans la méthode Trausext est la meilleure approche. Merci!
Supprimer cette peinture.SetTexttalign (Align.center); et remplacer cette canvas.Drawtext (GTTEXT, X * échelle, y * échelle, peinture); par ce canevas.Drawtext (GTexte, x, y, peinture); J'espère que cela aidera