2012-02-29 19 views
27

Tôi có một số thiết lập mã trong chế độ xem mở rộng, một số bản vẽ dễ dàng thu nhỏ (giống như vectơ). (Quy mô của tôi được thiết lập là 0-1.0)Android Canvas.drawTextOnPath trông không chính xác khi sơn được đặt thành Stroke

Tôi nhận thấy rằng khi tôi đặt tô màu tô thành FILL, văn bản được vẽ trên đường dẫn có vẻ chính xác, nhưng khi tôi đặt tô màu thành nét (tôi chỉ muốn đường viền của văn bản) hình ảnh trông giống như trên chuyến đi của LSD. Đây là mã mẫu của tôi:

Paint yellowPaint = Paints.getFillTextPaint(0.01f, 0xFFffea3e, 0.065f); 
    canvas.drawTextOnPath(mContext.getString(R.string.building_a_partnership), 
      Paths.getRoundedTextPath(mOuterCircleRectF, 280f, 350f), 
      0, -0.025f, yellowPaint); 

public static Paint getFillTextPaint(float f, int color, float textSize) { 
     Paint textPaint = new Paint(); 
     textPaint.setFlags(Paint.ANTI_ALIAS_FLAG); 
     textPaint.setStyle(Paint.Style.FILL); 
     textPaint.setColor(color); 
     textPaint.setTextSize(textSize); 
     textPaint.setStrokeWidth(f); 
     textPaint.setShadowLayer(0.002f, 0.0f, 0.0f, 0xFF000000); 
     textPaint.setTypeface(Typeface.SANS_SERIF); 
     return textPaint; 
    } 

Nếu tôi thay đổi Paint.Style từ FILL sang STROKE Tôi nhận được hình ảnh bên dưới. Tôi đã sử dụng canvas.drawText() và nó hoạt động tốt cho thấy các chữ cái vuốt ve. Nó chỉ là khi nó được áp dụng cho một con đường, khi nó có vẻ để có được tất cả kỳ lạ.

Fill Image

Stroke Image

+0

'drawTextOnPath' có thể không phải là hoạt động canvas được hỗ trợ khi bật tăng tốc phần cứng. Xem http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html –

+0

Cảm ơn Roman, sẽ kiểm tra. – Chrispix

+0

Vì vậy, tôi đã thử instance.setLayerType này (View.LAYER_TYPE_SOFTWARE, null); đã làm drawTextOnPath, sau đó đã làm instance.setLayerType (View.LAYER_TYPE_HARDWARE, null); - Có điều tương tự không. – Chrispix

Trả lời

0

Rõ ràng điều này là do thực tế là yếu tố quy mô của tôi là 0-1 .. Có vẻ như một lỗi w/cách render một cơn đột quỵ với kích thước < 1.0 được xử lý. Giải pháp được đề xuất là sử dụng tỷ lệ 0-100 ..