2013-01-12 16 views
9

jak ustawić ten tekst w pionie? jak obrócić tekst o 90 stopni? Napisz każdy list indywidualnie jest głupi, ale teraz, nie wiem inny sposób.canvas drawtext direction

Paint paint = new Paint(); 
public DrawView(Context context, double arr[]) 
{ 
    super(context); 
    paint.setColor(Color.BLACK); 
} 
    @Override 
    public void onDraw(Canvas canvas) 
    { 
     canvas.drawText("Test",50, 50, paint); 
    } 
+0

Twoje pytanie jest nieco niejasne: Czy chcesz, aby obrócić cały tekst (tak trzeba „obrócić głowę”, aby ją przeczytać), czy chcesz mieć znaki pod siebie (i nie obraca się)? – Veger

+0

Interesują mnie obie opcje: –

Odpowiedz

28

obrócenie tekstu (lub czegokolwiek innego) jest proste: Użyj metody rotate() obracanie płótna (potem jest obrócony do tyłu, poza tym wszystko narysować zostaje obrócone):

canvas.save(); 
canvas.rotate(90f, 50, 50); 
canvas.drawText("Text",50, 50, paint); 
canvas.restore(); 

save() i restore() metody odpowiednio zapisują stan płótna i przywracają go. Reszta twoich narysowanych elementów nie jest obracana. Jeśli chcesz tylko pomalować tekst, te dwie metody nie są konieczne.

Jeśli chcesz umieścić znaki napisu pod sobą, musisz przetworzyć każdy znak osobno. Najpierw musisz uzyskać wysokość czcionki i podczas rysowania każdego znaku musisz zwiększyć współrzędną y z tą wysokością w kółko.

int y = 50; 
int fontHeight = 12; // I am (currently) too lazy to properly request the fontHeight and it does not matter for this example :P 
for(char c: "Text".toCharArray()) { 
    canvas.drawText(c, 50, y, paint); 
    y += fontHeight; 
} 
+0

Dziękuję! Wszystko działa, ale zamiast tego canvas.store() piszę canvas.save() –

+0

Nie ma za co, zaktualizowałem swoją odpowiedź, więc używa 'save()'! – Veger

+0

Dziękujemy za pomocną odpowiedź! – myforums

0

Prawidłowe wersja: Płótno canvas_front = nowy płótna (bitmap_front);

Paint paint = new Paint(); 
    paint.setColor(Color.rgb(140, 0, 0)); 
    paint.setAlpha(80); 
    paint.setStrokeWidth(2); 

canvas_front.drawLine (0, (rzeczywista) (frontIV.getHeight() * 0,9), frontIV.getWidth() (rzeczywista) (frontIV.getHeight() * 0,9), farby);

canvas_front.save(); 
    canvas_front.rotate((float) 90 , 50, 50); 
    canvas_front.drawText("Text",50, 50, paint); 
    canvas_front.restore(); 
    frontIV.setImageBitmap(bitmap_front);