贝塞尔二阶曲线

1.贝塞尔二阶曲线

  如下图,由起始点A,控制点C,终点B;
  在AC上找到一点D,BC上找到一点E,使AD/DC=CE/EB;
  连接DE找到一点F使AD/DC=CE/EB=DF/FE;
  F即为贝塞尔曲线上一点。
在这里插入图片描述

2.Android绘制贝塞尔二阶曲线

  Path里面有两个方法可以进行贝塞尔二阶曲线:

	//默认起始点 (0,0),控制点(x1,y1),终点(x2,y2)
	public void quadTo(float x1, float y1, float x2, float y2) {
   
        isSimplePath = false;
        nQuadTo(mNativePath, x1, y1, x2, y2);
    }

	//相对于上一个控制点(oldX,oldY)的偏移(oldX+dx1,oldY+dy1),相对于上一个终点(x1,y1)的偏移(x1+dx1,y2+dy2)
   public void rQuadTo(float dx1, float dy1, float dx2, float dy2) {
   
        isSimplePath = false;
        nRQuadTo(mNativePath, dx1, dy1, dx2, dy2);
    }
   

  根据这个即可绘制曲线图:

代码如下

public class WaveView extends View {
   
	private Path			mPath;
	private Path			mLinePath;
	private Paint			mPaintBezier;
	private Paint			mPaintLine;
	private int				mWaveLength;
	private int				mScreenWidth;
	private int				mWaveCount;

	private ValueAnimator	mValueAnimator	= null;

	private int				mOffsetX;
	private int				mOffsetY;

	public WaveView(Context context) {
   
		super(context);
	}

	public WaveView(Context context, AttributeSet attrs) {
   
		super(context, attrs);

		mPaintBezier = new Paint(Paint
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值