电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2085 人浏览分享

android开发PathEffect问题处理

[复制链接]
2085 0

本文主要整理了关于android中PathEffect的问题汇总以及处理方式,以及给大家做了关于PathEffect类的详细解释。

我要画出一块由不规则path组成的区域,并且这个path因为视觉效果需要设置圆角,
我就通过Paint.setPathEffect(new CornerPathEffect(300)); 给设置了圆角,
但是在通过这个path组合成区域的时候因为这个圆角的设置整个区域都有圆角的效果了,
这不是我想要的。

10095325D-0.png

如图,黑色是我的path,红色是我设置了圆角的由path组成的区域。
四个角落都有了圆角的效果,这不是我想要的。
而蓝色区域是未设置圆角的,此时path一侧的区域就不符合标准了。

以下是我的全部代码

  1. public class PathEffectView extends View {

  2.   private Path line;
  3.   private Paint linePaint;


  4.   private Path range;
  5.   private Paint rangePaint;
  6.   private final Paint paint3;

  7.   public PathEffectView(Context context, @Nullable AttributeSet attrs) {
  8.     super(context, attrs);

  9.     linePaint = new Paint(Paint.ANTI_ALIAS_FLAG);

  10.     linePaint.setStrokeWidth(10);
  11.     linePaint.setColor(Color.BLACK);
  12.     linePaint.setStyle(Paint.Style.STROKE);
  13.     linePaint.setPathEffect(new CornerPathEffect(300));

  14.     rangePaint = new Paint(linePaint);

  15.     rangePaint.setColor(Color.BLUE);
  16.     rangePaint.setStyle(Paint.Style.FILL);


  17.     paint3 = new Paint(linePaint);
  18.     paint3.setColor(Color.RED);

  19.   }

  20.   @Override
  21.   protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  22.     super.onSizeChanged(w, h, oldw, oldh);

  23.     line = new Path();
  24.     range = new Path();

  25.     line.moveTo(0,1000);
  26.     line.rLineTo(200,-150);
  27.     line.rLineTo(200,300);
  28.     line.rLineTo(200,-350);
  29.     line.rLineTo(200,320);
  30.     line.rLineTo(200,-370);
  31.     line.lineTo(w,800);


  32.     range.addPath(line);
  33.     range.lineTo(w,h);
  34.     rangePaint.setPathEffect(null);
  35.     range.lineTo(0,h);
  36.     range.close();
  37.   }

  38.   @Override
  39.   protected void onDraw(Canvas canvas) {
  40.     super.onDraw(canvas);
  41.     canvas.save();
  42.     canvas.translate(0,-20);
  43.     canvas.drawPath(line, linePaint);
  44.     canvas.restore();


  45.     canvas.drawPath(range, rangePaint);
  46.     canvas.drawPath(range,paint3);
  47.   }
  48. }
复制代码



您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.