È possibile utilizzare la classe CornerPathEffect aiuto! Prendendo a disegnare una forma roundrect come un esempio.
Mentre si disegna un colore di sfondo con raggio utilizzando il metodo canvas.drawRoundRect() e il set di colori Style.FILL, è possibile ottenere una forma rect rotonda. E poi disegnando un bordo rect rotondo su di esso con Style.STROKE e la larghezza delle impostazioni della pittura usando lo stesso metodo, puoi ottenere un bordo.
Il codice:
mBackgroundRectF.set(0, 0, mWidth, mHeight);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBackgroundPaint);
// edge ajustment because paint stroke style is center align
float edge = mBorderWidth/2;
mBackgroundRectF.set(edge, edge, mWidth - edge, mHeight - edge);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBorderPaint);
Ora sembra, non è quello che voglio, che ha un po 'di offset tra sfondo e il bordo:
before
Proviamo CornerPathEffect:
mBackgroundRectF.set(0, 0, mWidth, mHeight);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBackgroundPaint);
// edge ajustment because paint stroke style is center align
float edge = mBorderWidth/2;
mBackgroundRectF.set(edge, edge, mWidth - edge, mHeight - edge);
// use CornerPathEffect and then use drawRect() method
mBorderPaint.setPathEffect(new CornerPathEffect(mRadius/2));
canvas.drawRect(mBackgroundRectF, mBorderPaint);
Ora sembra corretto:
after
Non capisco il problema, potresti essere più specifico? Cosa intendi dire "tutto il tratto è all'interno del Sentiero piuttosto che metà del tratto dentro e fuori"? – Marek
Supponiamo di disegnare una forma con un tratto largo 10 pixel in nero e quindi disegnare sulla forma con un tratto largo 5 pixel in rosso, quindi il tracciato rosso sarà metà della larghezza del tracciato nero e sarà nel mezzo, poiché metà del tratto sarà all'interno del contorno della forma e metà sarà all'esterno. Invece quello che voglio è che l'intero tratto sia all'interno del contorno della forma. Nell'esempio sopra, ciò significherebbe che il tratto rosso si troverebbe su un lato del tratto nero, il lato più vicino al contorno della forma – user2430147