2012-02-29 8 views
27

पर सेट होने पर सही नहीं दिखता है मेरे पास विस्तारित दृश्य में कुछ कोड सेटअप है जो कुछ चित्रों को आसानी से स्केल किया जाता है (वेक्टर-जैसे)। (मेरा स्केल 0-1.0 के रूप में सेट किया गया है)Android Canvas.drawTextOnPath स्ट्रोक

मैंने देखा कि जब मैंने अपना पेंट भरने के लिए भर दिया है, तो पथ पर खींचा गया पाठ सही दिखता है, लेकिन जब मैं स्ट्रोक में भरता हूं (मुझे बस इसकी रूपरेखा चाहिए पाठ) छवि दिखती है जैसे यह कुछ एलएसडी यात्रा पर है।

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

अगर मैं मैं नीचे चित्र प्राप्त स्ट्रोक को भरने से Paint.Style बदलने के लिए: यहाँ मेरी नमूना कोड है। मैंने canvas.drawText() का उपयोग किया है और यह स्ट्रोक किए गए अक्षरों को दिखाता है ठीक है। यह केवल तब होता है जब इसे पथ पर लागू किया जाता है, जब ऐसा लगता है कि यह सभी अजीब लगता है।

Fill Image

Stroke Image

+0

'drawTextOnPath' हार्डवेयर त्वरण के साथ समर्थित कैनवास ऑपरेशन नहीं हो सकता है। Http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html –

+0

धन्यवाद रोमन, इसे देखेंगे। – Chrispix

+0

तो, मैंने इस उदाहरण की कोशिश की .setLayerType (View.LAYER_TYPE_SOFTWARE, शून्य); drawTextOnPath किया, फिर example.setLayerType (View.LAYER_TYPE_HARDWARE, शून्य); - वही बात करता है। – Chrispix

उत्तर

0

जाहिर है इस तथ्य यह है कि मेरी पैमाने कारक 0-1 है की वजह से है .. वहाँ w/कैसे आकार के साथ एक स्ट्रोक प्रतिपादन < 1.0 व्यवहार किया जाता है एक बग प्रतीत होता है। सुझाए गए समाधान 0-100 के पैमाने का उपयोग करना है ..