canva基础绘制曲线(3)

摘要:
1.画布绘制Bezier曲线1.1画布绘制二次Bezier曲线1.1.1绘制二次贝zier曲线方法参数说明:绘制方法中各点的描述见下图1.1.2代码,实现二次Beier曲线varmycanvas=document的绘制。getElementById('mycanvas')//获取画布对象varcontext=mycanvas。getContext('2d')//getContext将返回

1、canvas绘制贝塞尔曲线

1.1canvas绘制二次贝塞尔曲线

1.1.1绘制二次贝塞尔曲线方法

canva基础绘制曲线(3)第1张

参数说明:关于绘制方法中每个点的说明见如下图

canva基础绘制曲线(3)第2张

1.1.2代码实现绘制二次贝塞尔曲线

                var mycanvas=document.getElementById('mycanvas'); //获取canvas对象
                var context=mycanvas.getContext('2d');  //getContext会返回一个对象,这个对象封装了很多绘图的属性和方法    
                context.moveTo(50,50);
                context.quadraticCurveTo(200,200,400,50);
                context.stroke();

1.1.3效果预览

canva基础绘制曲线(3)第3张

 1.2绘制三次贝塞尔曲线

1.2.1绘制三次贝塞尔曲线方法

canva基础绘制曲线(3)第4张

1.2.2绘制三次贝塞尔曲线代码实现:

                var mycanvas=document.getElementById('mycanvas'); //获取canvas对象
                var context=mycanvas.getContext('2d');  //getContext会返回一个对象,这个对象封装了很多绘图的属性和方法    
                context.moveTo(50,50);
                context.bezierCurveTo(200,200,100,0,300,50)
                context.stroke();

1.2.3效果预览

canva基础绘制曲线(3)第5张

2、绘制圆

canva基础绘制曲线(3)第6张

代码实现:

                var mycanvas=document.getElementById('mycanvas'); //获取canvas对象
                var context=mycanvas.getContext('2d');  //getContext会返回一个对象,这个对象封装了很多绘图的属性和方法    
                context.arc(100,100,50,0,Math.PI*2,true);
                context.stroke();

效果预览:

canva基础绘制曲线(3)第7张

下面我们从0开始绘制一个45度角的圆来说明一下最后一个参数

  • 如果为true则代表是从逆时针方向绘制,代码实现
context.arc(100,100,50,0,Math.PI/4,true);

效果预览:

canva基础绘制曲线(3)第8张

  • 如果为false则是从顺时针方向开始绘制

代码实现:

context.arc(100,100,50,0,Math.PI/4,false);

效果预览:

canva基础绘制曲线(3)第9张

3、应用实例

3.1绘制一个类似于心跳的小动画

canva基础绘制曲线(3)第10张

功能描述,当我点击圆内部的时候,圆会像外层放大缩小,类似于心跳 

代码实现:

window.onload=function(){
    var mycanvas=document.getElementById('mycanvas'); //获取canvas对象
    var context=mycanvas.getContext('2d');  //getContext会返回一个对象,这个对象封装了很多绘图的属性和方法    
    context.arc(200,200,50,0,Math.PI*2,false);
    context.stroke();
    var angle=0;
    mycanvas.onclick=function(e){
        var mx=e.layerX;  //获取鼠标点击的位置横坐标
        var my=e.layerY;  //获取鼠标点击的位置纵坐标
        if(context.isPointInPath(mx,my)){  //判断鼠标点击的是不是在圆内的位置,如果是,执行以下代码
            setInterval(function(){
                context.clearRect(0,0,400,400);  //清除之前的路径
                angle+=0.1;
                context.beginPath();
                context.arc(200,200,50+10*Math.sin(angle),0,2*Math.PI); //sin的取值范围是在-1到1之间,在这里我们利用三角函数,让圆的半径的变化的范围在0-10之间
                context.stroke();
            },50);
        }
    };

};

演示效果:

canva基础绘制曲线(3)第11张

免责声明:文章转载自《canva基础绘制曲线(3)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Vue template 报错 Type expected.Vetur(1110)python 获取过去几天,过去几个月,过去几年的时间列表下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OC与JS的交互(iOS与H5混编)

大神总结WKWebView的坑:https://mp.weixin.qq.com/s/rhYKLIbXOsUJC_n6dt9UfA 在开发过程中,经常会出现需要iOS移动端与H5混编的使用场景。 iOS中加载html网页, 可以使用UIWebView或WKWebView. 本篇博客将介绍两种控件使用过程中如何实现OC与JS的交互。 UIWebView de...

webos项目中EF仓储模式的代码

参考了网上EF数据处理的代码写成 在UPDATE的方法不太好,性能可能有问题。大家如果有什么好的方法可以给我留言。 暂时没有想到 接口类 using System; using System.Collections.Generic; namespace Model.EF { public interface IRepository<TEnt...

canvas基础—图形变换

1、canvas转换方法 1.1canvas转换方法 二、canvas实现图形的中心点旋转 step1:获取canva元素并指定canvas的绘图环境 var canvas=document.getElementById('canvas'); var context=canvas.getContext('2d'); step2:在画布(1...

android 内存泄漏,以及检测方法

1、为什么会产生内存泄漏 当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏。 2、内存泄漏对程序的影响 内存泄漏是造成应用程序OOM的主要原因之一。我们知道Android系统为每个应用程序分配的内存是有限的,而当一个应用中产生的内存泄漏比较多...

Android清除本地数据缓存代码

Android清除本地数据缓存代码案例 直接上代码: /* * 文 件 名: DataCleanManager.java * 描 述: 主要功能有清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录 */ package com.test.DataClean; import java.io.File; impor...

SpringMVC加载配置Properties文件的几种方式

最近开发的项目使用了SpringMVC的框架,用下来感觉SpringMVC的代码实现的非常优雅,功能也非常强大, 网上介绍Controller参数绑定、URL映射的文章都很多了,写这篇博客主要总结一下SpringMVC加载配置Properties文件的几种方式 1.通过context:property-placeholde实现配置文件加载   1.1、在...