Domanda

uso Così ho Canvas.drawText per disegnare una stringa su un Canvas . Il problema è che voglio disegnare un rettangolo prima di esso in modo che le appare testo centrato sul rettangolo. Ma mi ha colpito un problema reale. La dotazione x e y coordinate drawText in realtà non sono del " alto a sinistra " angolo del testo vero , ma piuttosto sulla linea in cui i personaggi iniziano. C'è un metodo Paint.getTextBounds che restituisce un rettangolo "con l'origine implicita" a (0,0) del testo che sarebbe disegnato. Il problema è che l'origine è a (0,0) . La larghezza e l'altezza di quella scatola sono corrette, ma non so come posizionare l'angolo in alto a sinistra in alto a sinistra della stringa che viene disegnato sulla tela. Credo che dovrei usare FontMetrics , ma dal momento che molti dei valori FontMetrics i rendimenti sono privi di documenti che non sono davvero sicuro come usarli per il mio scopo.

È stato utile?

Soluzione

ho finito per fare

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

che in realtà disegna il testo centrato a x , y . Prima che io disegnare un rettangolo centrato a x , y con la larghezza di paint.measureText ( testo )

Altri suggerimenti

provare a disegnare rettangolo utilizzando

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top