2017-05-02 31 views
2

斜めの縞模様の線を描画するカスタムビューを作成しようとしています。それは次のようになります。Android PathDashPathEffect:パス形状が直線では機能しない

enter image description here

私が何をすべきPathDashPathEffectを使用してと思うが、私は直線のパスになるように、パスの形状を設定すると、ビューは何も描画しません。パスにさらに多くのセグメントを追加して閉じることができます(たとえば、三角形にするなど)。ここで

は私のパスの形状です:

Path pathShape = new Path(); 
    pathShape.moveTo(0, 10); 
    pathShape.lineTo(10, 0); 

以上が動作しない、ビューには何も表示されません。以下の作品やラインのパターンとして三角形を示しています

Path pathShape = new Path(); 
    pathShape.moveTo(0, 0); 
    pathShape.lineTo(10, 10); 
    pathShape.lineTo(10, 0); 

私の全体のカスタムビュー:

private final Paint paint; 
private final Path path; 

public MyView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    paint = new Paint(); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setStrokeWidth(20); 
    paint.setColor(Color.RED); 
    Path pathShape = new Path(); 
    pathShape.moveTo(0, 0); 
    pathShape.lineTo(10, 10); 
    pathShape.lineTo(10, 0); 
    PathDashPathEffect pathEffect = new PathDashPathEffect(pathShape, 30, 30, PathDashPathEffect.Style.ROTATE); 
    paint.setPathEffect(pathEffect); 
    path = new Path(); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    path.reset(); 
    path.moveTo(0, getHeight()/2); 
    path.lineTo(getWidth(), getHeight()/2); 
    canvas.drawPath(path, paint); 
} 

は、誰もがそれを達成する方法を知っていますか?

多くの感謝!

答えて

0

最終的には、パスをパス以外を閉じる形に変更することでこれを実現しました。私は幅1の傾斜した矩形になるようにシェイプを作った。 PathEffectが閉じていないパスの場合、PathDashPathEffectは機能しません。

関連する問題