Android基础 -- 贝塞尔曲线

一、简介

关于贝塞尔曲线(百度百科)的定义,很多博客都有着详细的介绍,本篇博客来关注具体的实现过程。

首先来看2阶、3阶贝塞尔曲线的效果图

接下来,看具体的实现过程。

项目地址:https://github.com/zhangtiansimple/AndroidBasis

 

二、二阶贝塞尔曲线

要想画出二阶贝塞尔曲线,首先需要定义两个坐标点和一个控制点,然后是画笔路径等。

    private Paint mPaint, mTextPaint;
    private Path mPath;
    private PointF mFirstPoint, mSecondPoint, mControlPoint;

 接着在onSizeChanged方法中为坐标点赋值

        int centerX = w / 2;
        int centerY = h / 2;
        //给数据点和控制点赋值
        mFirstPoint.x = centerX - 300;
        mFirstPoint.y = centerY;
        mSecondPoint.x = centerX + 300;
        mSecondPoint.y = centerY;
        mControlPoint.x = centerX;
        mControlPoint.y = centerY - 300;

然后就是绘制,需要重点关注的是quadTo方法,我们画了两条辅助线来显示贝塞尔曲线的控制点的效果

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        mPath.reset();

        float radius = 8f;
        canvas.drawCircle(mFirstPoint.x, mFirstPoint.y, radius, mTextPaint);
        canvas.drawCircle(mSecondPoint.x, mSecondPoint.y, radius, mTextPaint);
        canvas.drawCircle(mControlPoint.x, mControlPoint.y, radius, mTextPaint);

        canvas.drawText("坐标点1", mFirstPoint.x + 10, mFirstPoint.y + 10, mTextPaint);
        canvas.drawText("坐标点2"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值