简单贝塞尔曲线
来源:互联网 发布:淘宝网衣服女装休闲裙 编辑:程序博客网 时间:2024/06/05 16:26
package com.example.beisaier;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.graphics.Point;import android.graphics.PointF;import android.view.View;/** * Created by Administrator on 2017/10/22. */public class Towlion extends View { private Paint paint; private PointF start; private Point end,zhondian; public Towlion(Context context) { super(context); //创建一个画笔 paint = new Paint(); paint.setStrokeWidth(10);//设置线的宽度 paint.setStyle(Paint.Style.STROKE);//设置样式 paint.setTextSize(60); start = new PointF(0, 0);//创建一个点 start.set(300,300); end = new Point(0, 0);//创建一个点 end.set(1000,350); zhondian = new Point(0, 0);//创建一个点 zhondian.set(800,450); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //设置点的style paint.setColor(Color.RED); paint.setStrokeWidth(20); //加入点 canvas.drawPoint(start.x, start.y, paint); canvas.drawPoint(zhondian.x, zhondian.y, paint); canvas.drawPoint(end.x, end.y, paint); /** * 俩点连线 */ //canvas.drawLine(start.x,start.y,zhondian.x,zhondian.y,paint); //canvas.drawLine(zhondian.x,zhondian.y,end.x, end.y,paint); paint.setColor(Color.GRAY); paint.setStrokeWidth(8); /** * 抛物线 */ Path path = new Path();//创建路径 //起点 path.moveTo(start.x, start.y); path.quadTo(400, 500, zhondian.x,zhondian.y); canvas.drawPath(path, paint); Path paths = new Path();//创建路径 paths.moveTo(zhondian.x,zhondian.y); paths.quadTo(900, 200, end.x, end.y); canvas.drawPath(paths, paint); }}package com.example.beisaier;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.graphics.PointF;import android.view.MotionEvent;import android.view.View;/** * Created by huqing on 2016/6/27. */public class TwoBezier extends View { private Paint mPaint; private int centerX, centerY; private PointF start, end, fingerPoint; /** * 使用,例: * TwoBezier mBezier = new TwoBezier(this); * setContentView(mBezier); * * @param context */ public TwoBezier(Context context) { super(context); //画笔 mPaint = new Paint(); mPaint.setStrokeWidth(8); mPaint.setStyle(Paint.Style.STROKE); mPaint.setTextSize(60); //三点确定该二阶曲线 start = new PointF(0, 0); end = new PointF(0, 0); fingerPoint = new PointF(0, 0); } /** * 手指触碰时获取当前手指坐标 * @param event * @return */ @Override public boolean onTouchEvent(MotionEvent event) { // 根据触摸位置更新控制点,并提示重绘 fingerPoint.x = event.getX(); fingerPoint.y = event.getY(); invalidate();//调用onDraw方法 return true; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 绘制数据点和控制点 mPaint.setColor(Color.GRAY); mPaint.setStrokeWidth(20); canvas.drawPoint(start.x, start.y, mPaint); canvas.drawPoint(end.x, end.y, mPaint); canvas.drawPoint(fingerPoint.x, fingerPoint.y, mPaint); // 绘制辅助线 mPaint.setStrokeWidth(4); canvas.drawLine(start.x, start.y, fingerPoint.x, fingerPoint.y, mPaint); canvas.drawLine(end.x, end.y, fingerPoint.x, fingerPoint.y, mPaint); // 绘制贝塞尔曲线 mPaint.setColor(Color.RED); mPaint.setStrokeWidth(8); //绘制曲线路径 Path path = new Path(); //起点 path.moveTo(start.x, start.y); //关键方法:谷歌封装好的贝塞尔曲线绘制方法quadTo,给出控制点和终点 path.quadTo(fingerPoint.x, fingerPoint.y, end.x, end.y); canvas.drawPath(path, mPaint); } /** * onSizeChanged的启动时间在onDraw之前,初始化该View时获取到长宽 */ @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); //中心点 centerX = w / 2; centerY = h / 2; //左侧点 start.x = centerX - 200; start.y = centerY; //右侧点 end.x = centerX + 200; end.y = centerY; //控制点,就是手指移动的那个点 fingerPoint.x = centerX; fingerPoint.y = centerY - 100; }}package com.example.beisaier;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new Towlion(this)); }}
阅读全文
0 0
- 简单贝塞尔曲线
- 贝塞尔曲线原理简单阐述
- android:贝塞尔曲线简单实现
- 贝塞尔曲线动画简单使用
- iOS 贝塞尔曲线简单使用
- iOS 简单的贝塞尔(UIBezierPath)曲线使用
- android贝塞尔曲线的简单应用
- Android 绘图贝塞尔曲线简单使用
- 贝塞尔曲线_简单理解入门_lemonen
- Android 贝塞尔曲线简单应用(一)
- Android 画一条简单的贝塞尔曲线
- 曲线平滑-贝塞尔曲线
- 简单曲线变化函数
- ROC曲线简单总结
- AnimationCurve曲线简单使用
- 史上最全的贝塞尔曲线(Bezier)全解(二):Android中曲线的简单绘制
- cocos2d-x 贝塞尔曲线的简单运用(CCBezierTo,CCBezierBy)
- [cocos2d-x]贝塞尔曲线的简单运用(CCBezierTo,CCBezierBy)
- jnlp下载
- hadoop搭建之hadoop安装
- kotlin試験toString
- Hive学习笔记
- python学习(二十三)
- 简单贝塞尔曲线
- hdu5698 瞬间移动
- jvm
- 垃圾回收
- HTTP请求报文和HTTP响应报文
- 程序员如何打造属于自己的云笔记服务
- 音频播放
- 如何学习LoadRunner性能测试?
- EF 的排序问题