美文网首页
canvas绘图基础

canvas绘图基础

作者: oo高学吟 | 来源:发表于2017-11-21 15:45 被阅读0次
  • 开始前的准备

<canvas id="myCanvas" width="800" height="800">
        当前浏览器不支持canvas,请更换浏览器
</canvas>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext("2d");
  • API

  1. 路径Path:
开始路径:context.beginPath();
闭合路径(不必对称出现):context.closePath();
  1. 状态:
保存状态值:context.save();
返回原始状态值:context.restore();
  1. 直线Line:
线色:context.strokeStyle = "#fd3/agba(0,255,255,0.5)";   
线宽:context.lineWidth = 3;
线接口:context.lineJoin = "miter/bevel/round"; context.lineCap = "round";
线接口=“miter”: context.miterLimit = 20;
移动落脚点:context.moveTo(x,y);
绘制路径:context.lineTo(x,y);
画线:context.stroke();
  1. 弧线Arc:
圆弧:context.arc(centerx,centery,radius,startAngle,endAngle,anticlockwise=false)  //指定圆心
弧线:context.arcTo(x1,y1,x2,y2,radius)   //指定控制点和结束点
贝塞尔二次曲线:contect.quadraticCurveTo(x1,y1,x2,y2)   //指定控制点和结束点
贝塞尔三次曲线:contect.bezierCurveTo(x1,y1,x2,y2,x3,y3)   //指定两个控制点和结束点
  1. 填充Fill:
填充色:context.fillStyle = "#000";
填充长方形(直接画出来):context.fillRect(0,0,canvas.width,canvas.height);
填充:context.fill();
线性渐变: var grd = context.createLinearGradient(xstart,ystart,xend,yend);
grd.addColorStop(stop,color);
径向渐变: var grd = context.createRadialGradient(x0,y0,r0,x1,y1,r1);
图片: var backgroundImg = new Image();
backgroundImg.src = "";
backgroundImg.onload = function(){
var pattern = context.createPattern(img, repeat-style); //no-repeat/repeat-x/repeat-y/repeat
}
  1. 变换:
位移:context.translate(x,y);
缩放:context.scale(x,y)   //(x缩放,y缩放)
变换矩阵:context.transform(1,0,0,1,x,y);   //(x缩放,y缩放)
旋转(弧度):context.rotate(rot/180*Math.PI); 
  1. 文字渲染:
字体字号:context.font = "20px sans-serif"  
font-style:normal/italic(斜体)/oblique(倾斜)
font-variant:normal/small-caps (英文小写变小型大写)
font-weight:normal400/lighter/bold700/bolder
font-size: 20px/2em/150%/xx-small/x-small/medium/large/x-large/xx-large
font-family: 多种字体备选、支持@font-face、web安全字体
打印文字:context.fillText("xxxxx",x,y)
文本水平对齐:context.textAlign = "left/center/right"
文本垂直对齐:context.textBaseline = "alphabetic(字母)/ideographic(方块字)/hanging(印度文)/top/middle/bottom"
文本度量:context.measureText(string).width
  1. 阴影与透明:
阴影色:context.shadowColor = “grey”
位移值:context.shadowOffsetX = 20
context.shadowOffsetY
模糊度:context.shadowBlur  //0不模糊,数字越大越模糊
透明度:context.globalAlpha = 0.5
遮盖效果:context.globalCompositeOperation = "source-over/source-atop/source-in/source-our/destination-over/lighter(颜色叠加)/copy/xor(重叠挖空)"
  1. 剪切:
    context.clip()

  2. 路径方向:
    非零环绕原则
    首先,我们得给图形确定一条路径,只要“一笔画”并且“不走重复路线”就可以了。如图,标出的是其中的一种路径方向。我们先假定路径的正方向为1(其实为-1啥的也都可以,正负方向互为相反数,不是0就行),那么反方向就是其相反数-1。
    S3中引出的射线L3,与两条子路径相交,但是其中有一条的反方向,计数器+1-1,结果为0,在里面。没错,只要结果不为0,该射线所在的区域就在外面。

相关文章

  • Android绘图之PathMeasure(16)

    Android 绘图学习 android绘图之Paint(1)android绘图之Canvas基础(2)Andro...

  • Android自定义控件

    Android中Canvas绘图基础详解 Android Paint、Canvas、Matrix使用讲解(一、Pa...

  • 【Canvas】笔记(一)基础知识

    (一)Canvas 基础 (1) canvas 使用基本流程都是先获取其 canvas 索引,然后获取其绘图环境 ...

  • 二、Canvas基本绘图

    Canvas绘图(一) HTML5 Canvas是使用强大的绘图、着色、基本二维形状变换为基础的,然后可供选择的内...

  • canvas绘图基础

    开始前的准备 API 路径Path: 状态: 直线Line: 弧线Arc: 填充Fill: 变换: 文字渲染: 阴...

  • Canvas绘图基础

    Canvas坐标系和绘图坐标系 Canvas绘图中牵扯到两种坐标系:Canvas坐标系与绘图坐标系。 Canvas...

  • Turtle 函数指令集

    turtle绘图的基础知识: 1. 画布(canvas) 画布就是turtle为我们展开用于绘图区域,我们...

  • android绘图之Canvas基础(2)

    Android 绘图学习 1 Canvas 基础 Canvas画布,用于绘制出各种形状配合画布的变幻操作可以绘制出...

  • 自定义 view - canvas

    canvas 是绘图的基础 API ,我们实现自定义 view ,绘制的部分都只能依靠 canvas 来实现。借用...

  • Android 自定义View之绘图

    【Android 自定义View之绘图】 基础图形的绘制 一、Paint与Canvas 绘图需要两个工具,笔和纸。...

网友评论

      本文标题:canvas绘图基础

      本文链接:https://www.haomeiwen.com/subject/sjjwvxtx.html