2011-11-23 9 views
5

Mam niektóre kodu gdzie Rysuję mój tekst na bitmapy (canvas)jak wyciągnąć tekst z kolorem tła przy użyciu płótna

canvas.drawTextOnPath(Text, textPath[count], gipa, -10, text); 

Proszę mi powiedzieć, że to możliwe, aby wyciągnąć ten tekst w ścieżce (textPath) z kolorem tła?

jest pełna funkcja do rysowania tylko tekst

public void drawText(float x,float y ,String Text,Canvas canvas,Paint paint1 ,int count) 
     { 
      float xren =text.measureText(Text.trim()); 

      canvas.drawTextOnPath(Text, textPath[count], gipa, -10, text); 

     } 

Za pomocą tej funkcji Rysuję tekst na moim płótnie. więc jak zmodyfikować tę funkcję do rysowania tego tekstu z tłem?

+0

Ty średnia test powinien mieć kolor lub płótno powinno mieć kolor? –

+0

Płaszczyzna mmmm ma bitmapę (obraz), na tym obrazie im rysowanie tekstu za pomocą drawTextOnPath (ponieważ potrzebuję tego funcitonu do rysowania). Chcę narysować ten tekst (na przykład zielony kolor tekstu) z tłem tylko dla tego tekstu (przykład: czarny) – Peter

+0

Nie możesz po prostu narysować ścieżki za pomocą linii o wybranym kolorze tła, a następnie narysować na niej tekst? Może to wymagać nieco przesunięcia ścieżki. –

Odpowiedz

18

Najprawdopodobniej potrzebne są tu dwa kroki. narysowałbyś najpierw linię wzdłuż ścieżki z kolorem tła, a następnie narysuj tekst zgodnie z opisem. Ustaw grubość linii za pomocą obiektu farby. Również zmiana stylu farby może pomóc w uzyskaniu efektu. spróbuj FILL, STROKE lub FILL_AND_STROKE, aby uzyskać różne efekty.

mpaint.setStyle(Paint.Style.STROKE); 
mpaint.setStrokeWidth(strokeWidth); 

Dodany próbka narysować ścieżkę (prostokąt) z czerwono:

  Paint mPaint = new Paint(); 
     mPaint.setColor(Color.RED); 
     Path mPath = new Path(); 
     RectF mRectF = new RectF(20, 20, 240, 240); 
     mPath.addRect(mRectF, Path.Direction.CCW); 
     mPaint.setStrokeWidth(20); 
     mPaint.setStyle(Paint.Style.STROKE); 
     canvas.drawPath(mPath, mPaint); 

następnie narysować tekst wzdłuż samej ścieżki (kolor niebieski):

 mPaint.setColor(Color.BLUE); 
     mPaint.setStrokeWidth(0); 
     mPaint.setStyle(Paint.Style.FILL); 
     mPaint.setTextSize(20); 
     canvas.drawTextOnPath("Draw the text, with origin at (x,y), using the specified paint, along the specified path.", mPath, 0, 5, mPaint); 

results

Powiązane problemy