Android中贝塞尔曲线的使用
来源:互联网 发布:sql语句例题 编辑:程序博客网 时间:2024/06/05 17:32
Android中主要在onDraw方法中使用quadTo & cubicTo 画二次和三次贝塞尔曲线;
绘制贝塞尔曲线一般会结合moveTo一起使用,
path.reset(); path.moveTo(start.x,start.y); path.quadTo(control.x,control.y,end.x,end.y); canvas.drawPath(path, mPaint); //二阶1个控制点,三阶2个控制点. path.moveTo(start.x, start.y); path.cubicTo(control1.x, control1.y, control2.x,control2.y, end.x, end.y);
使用中,我们常常不仅仅是画一条曲线,而是曲线和直线一起拼图/剪切画布。这里着重提一下ClipPath切了画布后有锯齿,从How to draw smooth / rounded path? 获取解决方案是,在drawBitmap的同时也drawPath,让圆滑的path补贴锯齿边缘,就光滑了.
mPaint.setColor(Color.RED); mPaint.setStrokeWidth(8); mPaint.setDither(true); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeJoin(Paint.Join.ROUND); mPaint.setStrokeCap(Paint.Cap.ROUND); mPaint.setPathEffect(new CornerPathEffect(10)); mPaint.setAntiAlias(true); path.reset(); path.moveTo(0, 0); path.lineTo(start.x, start.y); path.quadTo(control.x, control.y, end.x, end.y); path.lineTo(end.x, 0); path.lineTo(0, 0); canvas.drawPath(path, mPaint); mPaint.setColor(mColor); mPaint.setStyle(Paint.Style.FILL); mPaint.setAntiAlias(true); canvas.clipPath(path);//裁剪画布 canvas.drawBitmap(bitmap,null,rect,mPaint);
应该还有其他方式去掉锯齿,弄明白了后续补充。
关于贝塞尔曲线的来龙去脉、计算公式等等,前人有好的图文,不在这里粘贴了,见参考文献。
文献1讲解的比较全面实用,直接链接过去看就行,文献2让自己动手画线有点趣味性,文献5和6是实例可以练手。
参考文献:
1.Path之贝塞尔曲线 这一篇非常适合进入状态,看了就懂,看了就能上手做;
2.The Bezier Game 这里可以练习photoshop(sketch)这些绘图软件中的钢笔工具(Vector),自己动手连线,体会贝塞尔曲线的形成 (画不出来好揪心,对于控制点把握不好);
3.基于贝塞尔曲线的Android动画差值器 介绍了贝塞尔曲线的由来,算法公式,动画差值器的代码实现;
4.Android中moveTo、lineTo、quadTo、cubicTo、arcTo详解(实例);
5.三次贝塞尔曲线练习之弹性的圆 是个好玩的实例;
6.MetaballLoading 另一个实例;
7.如何获取控制点 stackoverflow How to create circle with Bézier curves?, 不得不说,数学是美的。
- Android中贝塞尔曲线的使用
- Android贝塞尔曲线的使用
- 在Android上的使用《贝赛尔曲线》!
- 在Android上的使用 贝赛尔曲线
- Android中贝塞尔曲线的绘制方法
- 贝塞尔曲线的使用
- Android 使用贝塞尔曲线将多点连成一条平滑的曲线
- Android中使用Bezier曲线
- Android中使用Bezier曲线
- 25—在Android上的使用《贝赛尔曲线》
- android使用贝塞尔曲线做一个简单的玩意
- Android -- 贝塞尔曲线公式的推导和简单使用
- Android 贝塞尔曲线的魅力
- Android 贝塞尔曲线的魅力
- iOS--贝塞尔曲线的使用
- Android 绘图贝塞尔曲线简单使用
- 【Android游戏开发二十五】在Android上的使用《贝赛尔曲线》!
- 【转】【Android游戏开发二十五】在Android上的使用《贝赛尔曲线》!
- 写在开通博客之时----前言
- tomcat学习概要笔记
- C++第七次实验
- 答辩前准备
- mysql ibdata1文件清理
- Android中贝塞尔曲线的使用
- OKHttp学习笔记
- Web前端开发推荐阅读书籍-精华
- 第114课:SparkStreaming+Kafka+Spark SQL+TopN+Mysql+KafkaOffsetMonitor电商广告点击综合案例实战(详细内幕版本)
- bower-web包管理器(依赖插件管理)
- spark之DataFrame分析日志文件
- 堆排序
- PHP代码添加注释的几种格式
- leetcode 205 Isomorphic Strings C++