2011-11-23 43 views
5

Tôi có một số mã nơi tôi đang vẽ văn bản của tôi trên bitmap (canvas)làm thế nào để vẽ văn bản với màu nền bằng vải

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

Hãy cho tôi biết, nó có thể rút ra văn bản này trong đường dẫn (textpath nên) với màu nền?

đó là chức năng đầy đủ cho việc vẽ chỉ văn bản

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); 

     } 

Sử dụng chức năng này tôi vẽ văn bản trên vải của tôi. vậy làm thế nào để sửa đổi chức năng này để vẽ văn bản này với nền?

+0

Bạn thử nghiệm trung bình nên có màu hoặc canvas nên có màu? –

+0

mmmm canvas có bitmap (hình ảnh), trên hình ảnh này im vẽ văn bản bằng cách sử dụng drawTextOnPath (vì tôi cần funciton này để vẽ) .. tôi muốn vẽ văn bản này (màu văn bản màu xanh lá cây ví dụ) với nền chỉ cho văn bản này (ví dụ: đen) – Peter

+0

Bạn không thể vẽ đường dẫn bằng một màu nền mong muốn và sau đó vẽ văn bản trên đó? Điều này có thể yêu cầu insetting đường dẫn một chút. –

Trả lời

18

Có thể cần hai bước ở đây. bạn sẽ vẽ một đường dọc theo đường dẫn đầu tiên với màu nền và sau đó vẽ văn bản như được chỉ ra. Đặt độ dày của đường thẳng với đối tượng sơn. Ngoài ra, thay đổi phong cách của sơn có thể giúp với hiệu ứng. hãy thử FILL, STROKE hoặc FILL_AND_STROKE để có các hiệu ứng khác nhau.

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

Added mẫu để vẽ một đường dẫn (hình chữ nhật) với màu đỏ:

  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); 

Sau đó vẽ văn bản dọc theo cùng một con đường (màu xanh):

 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

Các vấn đề liên quan