2017-02-22 3 views
0

Ich möchte gekrümmten Text gegen den Uhrzeigersinn zeichnen. Bis jetzt habe ich es nur bis zur Kurve geschafft.Gekrümmten Text gegen den Uhrzeigersinn statt im Uhrzeigersinn zeichnen

public class TextDrawActivity extends AppCompatActivity { 
    @Override protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(new TextDrawingView(this)); 
    } 

    static class TextDrawingView extends View { 
    private Path arc; 
    private RectF bounds; 
    private TextPaint textPaint;  

    public TextDrawingView(Context context) { 
     super(context); 

     arc = new Path(); 
     bounds = new RectF(); 
     textPaint = new TextPaint(); 
     textPaint.setAntiAlias(true); 
     textPaint.setTextSize(50); 
     textPaint.setColor(Color.BLACK); 
    } 

    @Override public void draw(Canvas canvas) { 
     super.draw(canvas); 

     bounds.set(0f, 0f, getWidth() * 0.8f, getHeight()/2.f); 

     arc.rewind(); // Clear internal structure. 
     arc.addArc(bounds, 45, 360); 
     canvas.drawTextOnPath("Lorem ipsum dolor sit amet, consectetur adipisicing elit.", 
      arc, 0, textPaint.getTextSize()/2.f, textPaint); 
    } 
    } 
} 

Mit diesem Code, wird es wie folgt aussehen:

Text

Wie kann ich den Text Zählertakt ziehen weise, so dass es nicht auf den Kopf mehr sein?

+0

Haben Sie initialisieren triend zu 'Path' [gegen den Uhrzeigersinn] (https://developer.android. com/Referenz/Android/Grafik/Path.Direction.html)? – azizbekian

+0

@azizbekian gibt es keine Überladung für addArc mit der Richtung – Niklas

+0

Ich denke [this] (https://hemantvc.blogspot.de/2016/10/text-curve-clockwise-and-antiticlockwise_95.html) wird Ihnen helfen. – azizbekian

Antwort

1

Wie pskink in den Kommentaren beantwortet eine negative sweepAngle verwendet werden kann, um diesen Effekt zu erzielen:

@Override public void draw(final Canvas canvas) { 
    super.draw(canvas); 

    bounds.set(0f, 0f, getWidth() * 0.8f, getHeight()/2.f); 

    arc.rewind(); // Clear internal structure. 
    arc.addArc(bounds, 135, -180); 
    canvas.drawTextOnPath("Lorem ipsum dolor sit amet, consectetur adipisicing elit.", arc, 0, textPaint.getTextSize()/2.f, textPaint); 
} 
+0

bemerken Sie, dass Sie sind Aufruf von 'arc.addArc' in' draw' Methode, so dass es hinzufügen und hinzufügen und hinzufügen ... Sie wissen, was ich meine? – pskink

+0

Yup es ist nur für brauen. In meinem echten Code mache ich es nur einmal oder ich benutze 'arc.rewind()'. Ich werde es aber aktualisieren. – Niklas

+0

ok, ich sehe es jetzt ... – pskink

Verwandte Themen